{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Random sample imputation\n",
    "\n",
    "Replacing of NA by random sampling for categorical variables is exactly the same as for numerical variables.\n",
    "\n",
    "Random sampling consist of taking a random observation from the pool of available observations of the variable, that is, from the pool of available categories, and using that randomly extracted value to fill the NA. In Random Sampling one takes as many random observations as missing values are present in the variable.\n",
    "\n",
    "By random sampling observations of the present categories, we guarantee that the frequency of the different categories/labels within the variable is preserved.\n",
    "\n",
    "\n",
    "### Assumptions\n",
    "\n",
    "Random sample imputation has the assumption that the data are missing completely at random (MCAR). If this is the case, it makes sense to substitute the missing values, by values extracted from the original variable distribution/ category frequency. \n",
    "\n",
    "\n",
    "### Advantages\n",
    "\n",
    "- Easy to implement\n",
    "- Fast way of obtaining complete datasets\n",
    "\n",
    "### Limitations\n",
    "\n",
    "- Randomness\n",
    "- May distort the relation of the labels with other variables within the dataset\n",
    "\n",
    "See lecture \"Replacing NA by random sampling\" in the section \"Engineering missing values in numerical variables\" for a discussion on the effect of randomness and why it is important to consider it."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "===============================================================================\n",
    "\n",
    "## Real Life example: \n",
    "\n",
    "### Predicting Sale Price of Houses\n",
    "\n",
    "The problem at hand aims to predict the final sale price of homes based on different explanatory variables describing aspects of residential homes. Predicting house prices is useful to identify fruitful investments, or to determine whether the price advertised for a house is over or underestimated, before making a buying judgment.\n",
    "\n",
    "=============================================================================\n",
    "\n",
    "In the following cells, I will demonstrate NA imputation by random sampling using the House Price datasets from Kaggle.\n",
    "\n",
    "If you haven't downloaded the datasets yet, in the lecture \"Guide to setting up your computer\" in section 1, you can find the details on how to do so."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "% matplotlib inline\n",
    "\n",
    "# for regression problems\n",
    "from sklearn.linear_model import LinearRegression, Ridge\n",
    "\n",
    "# to split and standarize the datasets\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "# to evaluate regression models\n",
    "from sklearn.metrics import mean_squared_error\n",
    "\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### House Price dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SalePrice      0.000000\n",
       "BsmtQual       0.025342\n",
       "GarageType     0.055479\n",
       "FireplaceQu    0.472603\n",
       "dtype: float64"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# let's load the dataset with a few columns for the demonstration\n",
    "cols_to_use = ['BsmtQual', 'FireplaceQu', 'GarageType', 'SalePrice']\n",
    "\n",
    "data = pd.read_csv('houseprice.csv', usecols=cols_to_use)\n",
    "\n",
    "# let's inspect the percentage of missing values in each variable\n",
    "data.isnull().mean().sort_values(ascending=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The variables BsmtQual and GarageType contain only a few observations with NA (2.5 and 5 %, respectively), therefore, replacing those observations by random sampling the available labels is a good approach. \n",
    "\n",
    "On the other hand, the variable FireplaceQu, contains missing data in  almost half of the observations. Therefore, replacing those by random sampling may quite likely distort the relationship of the different labels within the variable with the sale price. In addition, if so many observations contain missing values, it has to be for a reason, so we would be better off capturing missingness somehow. In future lectures, I will show how to capture missingness in categorical variables."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Imputation important\n",
    "\n",
    "Imputation has to be done over the training set, and then propagated to the test set. This means that the random sampling of categories should be done from the training set, and used to replace NA both in train and test sets."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((1022, 3), (438, 3))"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# let's separate into training and testing set\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(data[['BsmtQual', 'FireplaceQu', 'GarageType']],\n",
    "                                                    data.SalePrice,\n",
    "                                                    test_size=0.3,\n",
    "                                                    random_state=0)\n",
    "X_train.shape, X_test.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# let's create a variable to replace NA with the most frequent label or a random sample\n",
    "# make sure you understand every line of code.\n",
    "# If unsure, run them separately in a cell in the notebook until you familiarise with the output\n",
    "# of each line\n",
    "\n",
    "def impute_na(df_train, df_test, variable):\n",
    "    # get the most frequent label and replace NA in train and test set\n",
    "    most_frequent_category = df_train.groupby([variable])[variable].count().sort_values(ascending=False).index[0]\n",
    "    df_train[variable+'_frequent'] = df_train[variable].fillna(most_frequent_category)\n",
    "    df_test[variable+'_frequent'] = df_test[variable].fillna(most_frequent_category)\n",
    "    \n",
    "    # random sampling\n",
    "    df_train[variable+'_random'] = df_train[variable]\n",
    "    df_test[variable+'_random'] = df_test[variable]\n",
    "    \n",
    "    # extract the random sample to fill the na\n",
    "    random_sample_train = df_train[variable].dropna().sample(df_train[variable].isnull().sum(), random_state=0)\n",
    "    random_sample_test = df_train[variable].dropna().sample(df_test[variable].isnull().sum(), random_state=0)\n",
    "    \n",
    "    # pandas needs to have the same index in order to merge datasets\n",
    "    random_sample_train.index = df_train[df_train[variable].isnull()].index\n",
    "    random_sample_test.index = df_test[df_test[variable].isnull()].index\n",
    "    \n",
    "    df_train.loc[df_train[variable].isnull(), variable+'_random'] = random_sample_train\n",
    "    df_test.loc[df_test[variable].isnull(), variable+'_random'] = random_sample_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# and let's replace the NA\n",
    "for variable in ['BsmtQual', 'FireplaceQu', 'GarageType',]:\n",
    "    impute_na(X_train, X_test, variable)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "BsmtQual                 24\n",
       "FireplaceQu             478\n",
       "GarageType               54\n",
       "BsmtQual_frequent         0\n",
       "BsmtQual_random           0\n",
       "FireplaceQu_frequent      0\n",
       "FireplaceQu_random        0\n",
       "GarageType_frequent       0\n",
       "GarageType_random         0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# let's check if the values were completed\n",
    "X_train.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>BsmtQual</th>\n",
       "      <th>FireplaceQu</th>\n",
       "      <th>GarageType</th>\n",
       "      <th>BsmtQual_frequent</th>\n",
       "      <th>BsmtQual_random</th>\n",
       "      <th>FireplaceQu_frequent</th>\n",
       "      <th>FireplaceQu_random</th>\n",
       "      <th>GarageType_frequent</th>\n",
       "      <th>GarageType_random</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>64</th>\n",
       "      <td>Gd</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Attchd</td>\n",
       "      <td>Gd</td>\n",
       "      <td>Gd</td>\n",
       "      <td>Gd</td>\n",
       "      <td>Gd</td>\n",
       "      <td>Attchd</td>\n",
       "      <td>Attchd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>682</th>\n",
       "      <td>Gd</td>\n",
       "      <td>Gd</td>\n",
       "      <td>Attchd</td>\n",
       "      <td>Gd</td>\n",
       "      <td>Gd</td>\n",
       "      <td>Gd</td>\n",
       "      <td>Gd</td>\n",
       "      <td>Attchd</td>\n",
       "      <td>Attchd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>960</th>\n",
       "      <td>TA</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>TA</td>\n",
       "      <td>TA</td>\n",
       "      <td>Gd</td>\n",
       "      <td>TA</td>\n",
       "      <td>Attchd</td>\n",
       "      <td>Attchd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1384</th>\n",
       "      <td>TA</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Detchd</td>\n",
       "      <td>TA</td>\n",
       "      <td>TA</td>\n",
       "      <td>Gd</td>\n",
       "      <td>TA</td>\n",
       "      <td>Detchd</td>\n",
       "      <td>Detchd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1100</th>\n",
       "      <td>TA</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Detchd</td>\n",
       "      <td>TA</td>\n",
       "      <td>TA</td>\n",
       "      <td>Gd</td>\n",
       "      <td>Gd</td>\n",
       "      <td>Detchd</td>\n",
       "      <td>Detchd</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     BsmtQual FireplaceQu GarageType BsmtQual_frequent BsmtQual_random  \\\n",
       "64         Gd         NaN     Attchd                Gd              Gd   \n",
       "682        Gd          Gd     Attchd                Gd              Gd   \n",
       "960        TA         NaN        NaN                TA              TA   \n",
       "1384       TA         NaN     Detchd                TA              TA   \n",
       "1100       TA         NaN     Detchd                TA              TA   \n",
       "\n",
       "     FireplaceQu_frequent FireplaceQu_random GarageType_frequent  \\\n",
       "64                     Gd                 Gd              Attchd   \n",
       "682                    Gd                 Gd              Attchd   \n",
       "960                    Gd                 TA              Attchd   \n",
       "1384                   Gd                 TA              Detchd   \n",
       "1100                   Gd                 Gd              Detchd   \n",
       "\n",
       "     GarageType_random  \n",
       "64              Attchd  \n",
       "682             Attchd  \n",
       "960             Attchd  \n",
       "1384            Detchd  \n",
       "1100            Detchd  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# let's check that the 2 ways of replacing NA did not lead to the same variable:\n",
    "\n",
    "X_train.FireplaceQu_frequent.equals(X_train.FireplaceQu_random)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10a48fbe0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nA+PPUqlx0bq5AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10a833470>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10b927588>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# let's see how the different imputation methods affect the distribution of the labels within the variable\n",
    "\n",
    "for col in ['FireplaceQu', 'FireplaceQu_frequent', 'FireplaceQu_random']:\n",
    "    X_train.groupby([col])[col].count().sort_values(ascending=False).plot.bar()\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "From the 3 plots above, we observe that the replacement by the most frequent category increases the proportion of houses with the most frequent label quite dramatically (compare plots 1 and 2). We have seen the effect of adding all missing observation within the most frequent label in the previous lecture.\n",
    "\n",
    "On the other hand, replacing missing observations with random samples, preserves the proportion of observations within each of the categories(compare plots 1 and 3)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# let's transform the categories into numbers quick and dirty so we can use them in scikit-learn\n",
    "# the below function numbers the labels from 0 to n, n being the number of different labels \n",
    "#  within the variable\n",
    "\n",
    "for col in ['BsmtQual_random', 'FireplaceQu_random', 'GarageType_random',]:\n",
    "    labels_dict = {k:i for i, k in enumerate(X_train[col].unique(), 0)}\n",
    "    X_train.loc[:, col] = X_train.loc[:, col].map(labels_dict )\n",
    "    X_test.loc[:, col] = X_test.loc[:, col].map(labels_dict)\n",
    "\n",
    "for col in ['BsmtQual_frequent', 'FireplaceQu_frequent', 'GarageType_frequent',]:\n",
    "    labels_dict = {k:i for i, k in enumerate(X_train[col].unique(), 0)}\n",
    "    X_train.loc[:, col] = X_train.loc[:, col].map(labels_dict )\n",
    "    X_test.loc[:, col] = X_test.loc[:, col].map(labels_dict)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Linear Regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train set frequent imputation\n",
      "Linear Regression mse: 5508120196.474013\n",
      "Test set frequent imputation\n",
      "Linear Regression mse: 6364449797.852686\n",
      "\n",
      "Train set random imputation\n",
      "Linear Regression mse: 5837701371.356659\n",
      "Test set random imputation\n",
      "Linear Regression mse: 6456070592.706035\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Let's evaluate the performance of Linear Regression\n",
    "\n",
    "linreg = LinearRegression()\n",
    "linreg.fit(X_train[['BsmtQual_frequent', 'FireplaceQu_frequent', 'GarageType_frequent']], y_train)\n",
    "print('Train set frequent imputation')\n",
    "pred = linreg.predict(X_train[['BsmtQual_frequent', 'FireplaceQu_frequent', 'GarageType_frequent']])\n",
    "print('Linear Regression mse: {}'.format(mean_squared_error(y_train, pred)))\n",
    "print('Test set frequent imputation')\n",
    "pred = linreg.predict(X_test[['BsmtQual_frequent', 'FireplaceQu_frequent', 'GarageType_frequent']])\n",
    "print('Linear Regression mse: {}'.format(mean_squared_error(y_test, pred)))\n",
    "print()\n",
    "\n",
    "linreg = LinearRegression()\n",
    "linreg.fit(X_train[['BsmtQual_random', 'FireplaceQu_random', 'GarageType_random']], y_train)\n",
    "print('Train set random imputation')\n",
    "pred = linreg.predict(X_train[['BsmtQual_random', 'FireplaceQu_random', 'GarageType_random']])\n",
    "print('Linear Regression mse: {}'.format(mean_squared_error(y_train, pred)))\n",
    "print('Test set random imputation')\n",
    "pred = linreg.predict(X_test[['BsmtQual_random', 'FireplaceQu_random', 'GarageType_random']])\n",
    "print('Linear Regression mse: {}'.format(mean_squared_error(y_test, pred)))\n",
    "print()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The performance of the linear regression models built on the datasets which missing values were replaced by the frequent label or by random imputation is roughly the same.\n",
    "\n",
    "Keep in mind that a different random selection of labels may lead to better or worse performances. Go ahead and change the random_state in the impute_na function, and build different linear regressions for comparison."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Relationship between labels and other variables after imputation of NA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>BsmtQual</th>\n",
       "      <th>FireplaceQu</th>\n",
       "      <th>GarageType</th>\n",
       "      <th>BsmtQual_frequent</th>\n",
       "      <th>BsmtQual_random</th>\n",
       "      <th>FireplaceQu_frequent</th>\n",
       "      <th>FireplaceQu_random</th>\n",
       "      <th>GarageType_frequent</th>\n",
       "      <th>GarageType_random</th>\n",
       "      <th>SalePrice</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>64</th>\n",
       "      <td>Gd</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Attchd</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>219500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>682</th>\n",
       "      <td>Gd</td>\n",
       "      <td>Gd</td>\n",
       "      <td>Attchd</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>173000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>960</th>\n",
       "      <td>TA</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>116500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1384</th>\n",
       "      <td>TA</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Detchd</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>105000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1100</th>\n",
       "      <td>TA</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Detchd</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>60000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     BsmtQual FireplaceQu GarageType  BsmtQual_frequent  BsmtQual_random  \\\n",
       "64         Gd         NaN     Attchd                  0                0   \n",
       "682        Gd          Gd     Attchd                  0                0   \n",
       "960        TA         NaN        NaN                  1                1   \n",
       "1384       TA         NaN     Detchd                  1                1   \n",
       "1100       TA         NaN     Detchd                  1                1   \n",
       "\n",
       "      FireplaceQu_frequent  FireplaceQu_random  GarageType_frequent  \\\n",
       "64                       0                   0                    0   \n",
       "682                      0                   0                    0   \n",
       "960                      0                   1                    0   \n",
       "1384                     0                   1                    1   \n",
       "1100                     0                   0                    1   \n",
       "\n",
       "      GarageType_random  SalePrice  \n",
       "64                    0     219500  \n",
       "682                   0     173000  \n",
       "960                   0     116500  \n",
       "1384                  1     105000  \n",
       "1100                  1      60000  "
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "temp = pd.concat([X_train, y_train], axis=1)\n",
    "temp.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# let's map the numbers to the original labels (Gd was mapped to zero)\n",
    "\n",
    "temp['FireplaceQu_random'] = temp['FireplaceQu_random'].map({0:'Gd'})\n",
    "temp['FireplaceQu_frequent'] = temp['FireplaceQu_frequent'].map({0:'Gd'})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x10bea8320>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAvQAAAHVCAYAAACexG8YAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8leWd///XlT0sAQIJSwJkYQthU8ImiogVcUG0dUFn\nKmqnVus+jo6233Ha/tpp9Tszdpyx9FvrPi5YFURrtYIbUhBBFgkQCNkIkJWwhCRku35/3OfEhGyH\n5JyTc8L7+Xjkcedc9/ZJfDzwzcV1f25jrUVERERERIJTSE8XICIiIiIiXadALyIiIiISxBToRURE\nRESCmAK9iIiIiEgQU6AXEREREQliCvQiIiIiIkFMgV5EREREJIgp0IuIiIiIBDEFehERERGRIBbW\n0wUEmyFDhtikpKSeLkNEREREerktW7aUWWvjOjtOgf4MJSUlsXnz5p4uQ0RERER6OWNMvifHacmN\niIiIiEgQU6AXEREREQliCvQiIiIiIkFMa+hFREREznJ1dXUUFhZSU1PT06WclaKiokhMTCQ8PLxL\n5yvQi4iIiJzlCgsL6d+/P0lJSRhjerqcs4q1lvLycgoLC0lOTu7SNbTkRkREROQsV1NTw+DBgxXm\ne4AxhsGDB3frX0cU6EVEREREYb4Hdfd3r0AvIiIiIhLEFOhFREREpMcVFxdz0003kZKSwvTp05kz\nZw4rV65s89j58+d360Wfjz32GGvWrOnwmNWrV/Ob3/ymy/fo169fl889U3ooVkRERER6lLWWq6++\nmmXLlvHqq68CkJ+fz+rVq71+r4aGBn7xi190etxVV13FVVdd5fX7+4ICvYiIiIg0+fm7mew6dNyr\n15w4IoZ/XZze7v6PP/6YiIgI7rjjjqax0aNHc8899wBQXV3Nrbfeyvbt25kwYQLV1dVtXmft2rX8\n0z/9E/X19cyYMYPly5cTGRlJUlISN9xwAx999BEPP/wwH3zwAVdeeSXXXnst77//Pv/4j/9I3759\nmTt3Ljk5Obz33nu88MILbN68mf/5n//hlltuISYmhs2bN1NUVMQTTzzBtddeS2VlJUuWLKGiooK6\nujp++ctfsmTJEq/+7jyhJTciIiIi0qMyMzM599xz292/fPly+vTpw+7du/n5z3/Oli1bWh1TU1PD\nLbfcwooVK/jmm2+or69n+fLlTfsHDx7M119/zdKlS1uc86Mf/Yi//OUvbNmyhdLS0nZrOHz4MF98\n8QXvvfcejzzyCOD0j1+5ciVff/01n3zyCQ8++CDW2q78CrpFM/QiIiIi0qSjmXR/ueuuu/jiiy+I\niIjgq6++4vPPP+fee+8FYMqUKUyZMqXVOVlZWSQnJzNu3DgAli1bxtNPP839998PwA033NDqnD17\n9pCSktLU//3GG2/kD3/4Q5s1XX311YSEhDBx4kSKi4sBZ6nQT37yEz7//HNCQkI4ePAgxcXFDBs2\nrPu/hDOgQC8iIiIiPSo9PZ233nqr6fPTTz9NWVkZGRkZXrtH3759u3V+ZGRk0/fuWfhXXnmF0tJS\ntmzZQnh4OElJST3ytl0tuRERERGRHrVgwQJqampaLJGpqqpq+n7evHlND8vu3LmTHTt2tLrG+PHj\nycvLIzs7G4CXX36ZCy+8sMP7jh8/npycHPLy8gBYsWLFGdV97Ngx4uPjCQ8P55NPPiE/P/+MzvcW\nzdCLiIiISI8yxrBq1SoeeOABnnjiCeLi4ujbty+PP/44AHfeeSe33noraWlppKWlMX369FbXiIqK\n4vnnn+e6665reii2+UO2bYmOjuZ3v/sdixYtom/fvsyYMeOM6v67v/s7Fi9ezOTJk8nIyGDChAln\ndL63mJ5YuB/MMjIybHf6noqIn9XWQkRET1chIhLQdu/eTVpaWk+X0SMqKyvp168f1lruuusuxo4d\nywMPPOD3Otr6b2CM2WKt7XTdkZbciEjv9dxz0KcPXHcdaPJCRETa8MwzzzBt2jTS09M5duwYP/rR\nj3q6pDOmGfozpBl6kSBRXg6pqc4MfXU1vPceXHFFT1clIhKQzuYZ+kChGXoRkdO99RYcOwaffgpD\nhsCLL/Z0RSIiIj6hQC8ivdPbb8OYMTBjBlx/vTNDX1fX01WJiIh4nQK9iPQ+dXXw+edw+eVgDFx0\nkbPs5uuve7oyERERr1OgF5HeZ8cOJ8DPnet8vuACZ7tuXc/VJCIi4iMK9CLS+2zY4GznzHG2Q4dC\nUhJs2dJjJYmISMeMMTz44INNn//93/+dn/3sZy2OmTZtGkuXLvVzZYFPgV5Eep9t2yAuDkaO/HZs\n8mRn5l5ERAJSZGQkb7/9NmVlZW3u3717Nw0NDaxbt46TJ0/6ubrApjfFikjvk5kJ6ektxyZPhvff\nh1OnIDKyZ+oSEQkG99/vTIx407Rp8NvfdnhIWFgYt99+O08++SS/+tWvWu1/7bXX+P73v8/u3bt5\n5513uOmmm7xbYxDTDL2I9C7Wwq5dMHFiy/HJk6GhAfbs6Zm6RESkU3fddRevvPIKx44da7VvxYoV\nLF26lBtvvJHXXnutB6oLXJqhF5He5eBBOH689Qz9uHHONjsbpk71f10iIsGik5l0X4qJieHmm2/m\nqaeeIjo6uml88+bNDBkyhFGjRpGQkMBtt93GkSNHiI2N7bFaA4lm6EWkd8nMdLanB/rUVGebk+Pf\nekRE5Izcf//9PPvssy3Wyb/22mvs2bOHpKQkUlNTOX78OG+99VYPVhlYFOhFpHfZtcvZnr7kZsAA\nGDwY9u/3f00iIuKx2NhYrr/+ep599lkAGhsbeeONN/jmm2/Iy8sjLy+Pd955R8tumlGgF5HeZf9+\nJ7zHxbXel5KiGXoRkSDw4IMPNnW7WbduHQkJCYwYMaJp/7x589i1axeHDx/uqRIDitbQi0jvkpcH\nyclt70tNhU2b/FqOiIh4prKysun7oUOHUlVV1fR548aNLY4NDQ2lqKjIb7UFOs3Qi0jvkpvrvESq\nLampkJ8PdXV+LUlERMSXFOhFpPew1pmhby/Qp6Q4rSsLCvxZlYiIiE8p0ItI71FWBlVV7S+5GT3a\n2R444L+aREREfEyBXkR6j9xcZ9veDH1iorM9eNAv5YiIiPiDAr2I9B55ec62vRn6hARnW1jol3JE\nRET8QYFeRHoP9wy9e2nN6fr1g5gYzdCLiEivokAvIr1HXh7ExjqhvT2JiZqhFxEJQMXFxdx0002k\npKQwffp05syZw8qVK9s8dv78+WzevLlb9/v0008xxvDuu+82jV155ZV8+umnTZ/LysoIDw/n97//\nfbfu5WsK9CLSe3TUg94tIUEz9CIiAcZay9VXX828efPIyclhy5YtvP766xR2YwImqb3nqZpJTEzk\nV7/6Vbv7//SnPzF79uyAfyutXiwlIr1HQQGMG9fxMQkJsGuXf+oREQlC939wP9uKtnn1mtOGTeO3\ni37b7v6PP/6YiIgI7rjjjqax0aNHc8899wBQXV3Nrbfeyvbt25kwYQLV1dVeqWvq1KnU1dXx0Ucf\ncckll7Ta/9prr/Ef//Ef3HTTTRQWFpLobq4QYDRDLyK9x6FD3z742p6EBDh8GOrr/VOTiIh0KjMz\nk3PPPbfd/cuXL6dPnz7s3r2bn//852zZssVr9/7pT3/KL3/5y1bjBw4c4PDhw8ycOZPrr7+eFStW\neO2e3qYZehHpHaqq4OhRGDGi4+MSE6GxEYqKvm1jKSIiTTqaSfeXu+66iy+++IKIiAi++uorPv/8\nc+69914ApkyZwpQpU9o9b/369QAcOnSIadOmAXDdddfx05/+tM1z5s2bB8AXX3zRYnzFihVcf/31\nACxdupTbbruNBx98sPs/nA8o0ItI73D4sLPtLNAPH+5sFehFRAJGeno6b731VtPnp59+mrKyMjIy\nMs7oOk8//XTT90lJSWzb5tnSIfcsfVjYt9H4tddeo6ioiFdeeQVw/oKwb98+xo4de0Y1+YOW3IhI\n73DokLPtLNAPHepsi4t9W4+IiHhswYIF1NTUsHz58qaxqqqqpu/nzZvHq6++CsDOnTvZsWOHV++/\ncOFCKioqmq67d+9eKisrOXjwIHl5eeTl5fHoo48G7MOxCvQi0jucaaAvKfFtPSIi4jFjDKtWreKz\nzz4jOTmZmTNnsmzZMh5//HEA7rzzTiorK0lLS+Oxxx5j+vTpXq/hpz/9KQcOHACc2flrrrmmxf7v\nfe97ARvojbW2p2sIKhkZGba7fU9FxAd++1t44AEoL3d60bfn5EnnBVO//jU88oj/6hMRCWC7d+8m\nLS2tp8s4q7X138AYs8Va2+m6I83Qi0jvcOgQREbCoEEdH9e3r/OlGXoREeklFOhFpHc4dMhZbmNM\n58fGx2sNvYiI9BoK9CLSO7gDvSeGDlWgFxGRXkOBXkR6hzMJ9PHxWnIjIiK9hk8DvTFmkTEmyxiT\nbYxp9fSZcTzl2r/DGHNuZ+caY2KNMR8ZY/a5toOa7XvUdXyWMebSZuO/MsYcMMZUnnb/SGPMCtc5\nXxpjkrz9OxARP9EMvYiInKV8FuiNMaHA08BlwETgRmPMxNMOuwwY6/q6HVjuwbmPAGuttWOBta7P\nuPYvBdKBRcDvXNcBeBeY2UaZPwAqrLVjgCeBx7v5Y4tITzhxwvk6k0BfVgYNDb6tS0RExA98OUM/\nE8i21uZYa2uB14Elpx2zBHjJOjYCA40xwzs5dwnwouv7F4Grm42/bq09Za3NBbJd18Fau9Fae7iN\nGptf603gYmM8eaJORAKKp2+JdYuPh8ZGp8WliIgEhOLiYm666SZSUlKYPn06c+bMYeXKla2Omz9/\nPj3VQvyFF17g7rvv7pF7d8SXgT4BONDsc6FrzJNjOjp3aLNwXgQMPYP7tVujtbYeOAYMPv0gY8zt\nxpjNxpjNpaWlnVxSRPzO05dKuenlUiIiAcVay9VXX828efPIyclhy5YtvP766xQWFnp0fl5eHvPn\nz+/wmPr6ei9UGpjCerqA7rDWWmOMz9+MZa39A/AHcF4s5ev7icgZOtNAHx/vbIuLYdIk39QkIhKk\n7r//frZt2+bVa06bNo3f/va37e7/+OOPiYiI4I477mgaGz16NPfccw/V1dXceuutbN++nQkTJlBd\nXe3xfW+55RaioqLYunUrc+fOZenSpdx3333U1NQQHR3N888/z/jx43nhhRdYvXo1VVVV7N+/n2uu\nuYYnnngCgOeff55f//rXDBw4kKlTpxIZGQk4f4m47bbbKCsrIy4ujueff55Ro0Zxyy23EB0dzdat\nWykpKeG5557jpZdeYsOGDcyaNYsXXniha7/EDvgy0B8ERjb7nOga8+SY8A7OLTbGDLfWHnYtz3FP\nsXlyv/ZqLDTGhAEDAP0bvEiwKSpytsOGeXa8e4ZeD8aKiASEzMxMzj333Db3LV++nD59+rB79252\n7NjR7nHtKSws5G9/+xuhoaEcP36cdevWERYWxpo1a/jJT37CW2+9BcC2bdvYunUrkZGRjB8/nnvu\nuYewsDD+9V//lS1btjBgwAAuuugizjnnHADuueceli1bxrJly3juuee49957WbVqFQAVFRVs2LCB\n1atXc9VVV7F+/Xr++Mc/MmPGDLZt28a0adO68dtqzZeB/itgrDEmGSc4LwVuOu2Y1cDdxpjXgVnA\nMVdQL+3g3NXAMuA3ru07zcZfNcb8JzAC50HbTZ3U6L7WBuBa4GNrrWbgRYJNSQmEh8OAAZ4dr0Av\nItKujmbS/eWuu+7iiy++ICIigoSEBO69914ApkyZwpQpU5qOu+aaa8jNzaW2tpaCgoKmoHzfffdx\n6623AnDdddcRGur0STl27BjLli1j3759GGOoq6trutbFF1/MANf/RyZOnEh+fj5lZWXMnz+fuLg4\nAG644Qb27t0LwIYNG3j77bcB+P73v8/DDz/cdK3FixdjjGHy5MkMHTqUyZMnA5Cenk5eXl7wBHpr\nbb0x5m7gQyAUeM5am2mMucO1//fA+8DlOA+wVgG3dnSu69K/Ad4wxvwAyAeud52TaYx5A9gF1AN3\nWWsbAIwxT+D8haCPMaYQ+KO19mfAs8DLxphs4AjOXxxEJNiUljrLaDx9pn3gQAgJ0UOxIiIBIj09\nvWmmHODpp5+mrKyMjIwMEhLafyTS/dBsXl4et9xyC59++mmrY/r27dv0/b/8y79w0UUXsXLlylbr\n7t1LaQBCQ0O7tebefa2QkJAW1w0JCfHJWn6f9qG31r5vrR1nrU211v7KNfZ7V5jH1d3mLtf+ydba\nzR2d6xovt9ZebK0da639jrX2SLN9v3IdP95a+5dm4w9baxOttSGu7c9c4zXW2uustWOstTOttTm+\n/H2IiI+UlIBr9sQjISEQG+u0rhQRkR63YMECampqWL58edNYVVUVAPPmzePVV18FYOfOnezYsaPL\n9zl27FjTXxA8Wcs+a9YsPvvsM8rLy6mrq+NPf/pT077zzjuP119/HYBXXnmFCy64oMt1dZfeFCsi\nwc89Q38mBg/WDL2ISIAwxrBq1So+++wzkpOTmTlzJsuWLePxxx/nzjvvpLKykrS0NB577DGmT5/e\n5fs8/PDDPProo5xzzjkezZQPHz6cn/3sZ8yZM4e5c+eSlpbWtO+///u/ef7555kyZQovv/wy//Vf\n/9XlurrLaMn4mcnIyLA91ftURNqRkgLnnQf/+7+en3P++RARAR9/7Lu6RESCxO7du1uEVfG/tv4b\nGGO2WGszOjtXM/QiEvw0Qy8iImcxBXoRCW7V1VBZeWZr6EGBXkREeg0FehEJbu63N2uGXkSkW7QM\nu+d093evQC8iwa3E9W65rszQ19SAq4uCiMjZLCoqivLycoX6HmCtpby8nKioqC5fw5cvlhIR8b3u\nzNCDM0vfp493axIRCTKJiYkUFhZS6v4zVfwqKiqKxMTELp+vQC8iwa2rM/RDhjjbsjIYOdK7NYmI\nBJnw8HCSk5N7ugzpIi25EZHg5o0ZehERkSCmQC8iwa20FCIjoV+/MztPgV5ERHoJBXoRCW4lJc7s\nvDFndp4CvYiI9BIK9CIS3EpLz3z9PEBsrLNVoBcRkSCnQC8iwa2kpGuBPiIC+vdXoBcRkaCnQC8i\nwa209MwfiHXTy6VERKQXUKAXkeDW1Rl6cFpXlpV5tx4RERE/U6AXkeB18qTzplfN0IuIyFlMgV5E\ngpe7B31XZ+gV6EVEpBdQoBeR4NXVl0q5KdCLiEgvoEAvIsGrpMTZdmeG/tgxqK/3Xk0iIiJ+pkAv\nIsHLGzP0AEeOeKceERGRHqBALyLBq7sz9O6XSynQi4hIEFOgF5HgVVoK0dHQt2/Xzh80yNlWVHiv\nJhERET9ToBeR4OXuQW9M185XoBcRkV5AgV5Egld33hILCvQiItIrKNCLSPAqLe36+nlQoBcRkV5B\ngV5EgldJiWboRUTkrKdALyLBydruz9CHh0O/fgr0IiIS1BToRSQ4nTwJ1dXdm6EHZ5ZebStFRCSI\nKdCLSHByv1SqOzP04AR6zdCLiEgQU6AXkeDU3ZdKuSnQi4hIkFOgF5Hg5J6h98aSGwV6EREJYgr0\nIhKcNEMvIiICKNCLSLDy1hr62FgFehERCWoK9CISnEpKoE8f6Nu3e9cZNAiqqqC21jt1iYiI+JkC\nvYgEp9LS7q+fB71cSkREgp4CvYgEp5KS7i+3gW8DvXrRi4hIkFKgF5HgpBl6ERERQIFeRIKVt2fo\nFehFRCRIKdCLSPCxVjP0IiIiLgr0IhJ8Kivh1CnN0IuIiKBALyLByP1SKc3Qi4iIKNCLSBDy1kul\nAMLCoH9/BXoREQlaCvQiEny8OUMPziy9Ar2IiAQpBXoRCT7enKEHJ9CrD72IiAQpBXoRCT7uGXpv\nBnrN0IuISJBSoBeR4FNaCv36QXS0d66nQC8iIkFMgV5Ego+3XirlpkAvIiJBTIFeRIKPt14q5RYb\nq0AvIiJBS4FeRIKPL2boq6udl1WJiIgEGQV6EQk+3p6h18ulREQkiCnQi0hwsdY3M/Sg1pUiIhKU\nFOhFJLgcPw51dZqhFxERcVGgF5Hg4u2XSoECvYiIBDUFehEJLu6XSmmGXkREBFCgF5Fgoxl6ERGR\nFhToRSS4+GKGfuBAZ6tALyIiQUiBXkSCiy9m6MPCICZGgV5ERIKSAr2IBJeSEid8R0Z697qDBinQ\ni4hIUFKgF5HgUlrq3dl5NwV6EREJUgr0IhJcSkq8u37eTYFeRESClAK9iAQXXwZ6vSlWRESCkAK9\niAQXzdCLiIi0oEAvIsGjsdFZQ69ALyIi0sSngd4Ys8gYk2WMyTbGPNLGfmOMecq1f4cx5tzOzjXG\nxBpjPjLG7HNtBzXb96jr+CxjzKXNxqcbY75x7XvKGGNc46OMMZ8YY7a67n+5734bItJtFRXQ0OC7\nQF9T43yJiIgEEZ8FemNMKPA0cBkwEbjRGDPxtMMuA8a6vm4Hlntw7iPAWmvtWGCt6zOu/UuBdGAR\n8DvXdXBd94fN7rXINf5/gDestee4zv2dt35+EfEBX7xUyk1vixURkSDlyxn6mUC2tTbHWlsLvA4s\nOe2YJcBL1rERGGiMGd7JuUuAF13fvwhc3Wz8dWvtKWttLpANzHRdL8Zau9Faa4GXmp1jgRjX9wOA\nQ1776UXE+9yB3ldtK0GBXkREgo4vA30CcKDZ50LXmCfHdHTuUGvtYdf3RcBQD65V2M61fgb8vTGm\nEHgfuKetH8QYc7sxZrMxZnOp+y2VIuJ/mqEXERFpJagfinXNuNtuXOJG4AVrbSJwOfCyMabV78Ra\n+wdrbYa1NiPOFzODIuIZ91+ofRHoY2OdrQK9iIgEGV8G+oPAyGafE11jnhzT0bnFrmU0uLYlHlwr\nsZ1r/QB4A8BauwGIAoZ49NOJiP+VlIAxMHiw96+tGXoREQlSvgz0XwFjjTHJxpgInIdOV592zGrg\nZle3m9nAMddymo7OXQ0sc32/DHin2fhSY0ykMSYZ5+HXTa7rHTfGzHZ1t7m52TkFwMUAxpg0nECv\nNTUigaqkxAnzYWEen2KtZcOBDWw4sAHnH/XaoUAvIiJByvP/K54ha229MeZu4EMgFHjOWptpjLnD\ntf/3OOvWL8d5gLUKuLWjc12X/g3whjHmB0A+cL3rnExjzBvALqAeuMta2+A658fAC0A08BfXF8CD\nwDPGmAdwlu7cYjv8P76I9KgzfKnUqfpTfO+N7/HnfX8G4PKxl/PW9W8RFRbV+uCBA52tAr2IiAQZ\no/x6ZjIyMuzmzZt7ugyRs9O8eRAaCp984tHh9/3lPp7a9BRPfOcJjDE89NFD3JlxJ7+7op0OtQMG\nwC23wH/9l/dqFhER6SJjzBZrbUZnx/lshl5ExOtKSmDqVI8OzSzJ5H+++h/umnEXD819CIBDJw7x\n5MYn+eG5P+Sc4ee0PklvixURkSAU1F1uROQsU1LicQ/6x9c/TnRYND+f//OmsccufIyBUQP55bpf\ntn2SAr2IiAQhBXoRCQ61tU7Y9mAN/dGao6zIXMGt025lcJ9vO+IMjBrIP5zzD6zOWk1xZXHrExXo\nRUQkCCnQi0hwKCtzth4E+rd3v01tQy03T7251b4fnPsD6hvreXnHy61PVKAXEZEgpEAvIsHhDN4S\n+9rO10gdlErGiNbPEU0YMoHzRp7H89ueb32iAr2IiAQhBXoRCQ4eBvqSkyV8nPsxN066EefVE63d\nNOkmdpXuYm/53pY7FOhFRCQIKdCLSHDwMNCvyVlDo21kyYQl7R5zxbgrAHhv73stdwwaBDU1zpeI\niEiQUKAXkeBQ6nqJcyeB/qOcjxgUNYhzhrXRltIlaWASk+IntQ70sbHOVrP0IiISRBToRSQ4lJRA\neLjz8qd2WGtZk7OGi1MuJjQktMPLXTn2StYVrONozdFvBwcNcrYK9CIiEkQU6EUkOJSUOLPz7ayL\nB8gqz6LweCGXpFzS6eUWjVlEfWM96/LXfTuoQC8iIkFIgV5EgoMHL5X6NO9TABYkL+j0crMSZxEZ\nGtl0DqBALyIiQUmBXkSCg3uGvgMbCzcS1yeO1EGpnV4uKiyKWYmz+Cz/s28H3YH+yJHuVCoiIuJX\nCvQiEhw8CPQbCjcwZ+ScdttVnm7+6PlsLdrKsZpjzoBm6EVEJAgp0ItIcOgk0JdXlbO3fC+zE2Z7\nfMkLky6k0TbyRcEXzsDAgc5WgV5ERIKIAr2IBL6TJ6GqqsNA/+XBLwGYM3KOx5edlTCLEBPCxsKN\nzkBoKMTEKNCLiEhQUaAXkcDnwUulNhZuJMSEkDEiw+PL9o3oy6T4SXx16KtvB/W2WBERCTIK9CIS\n+NyBvoMuN1uLtpI2JI1+Ef3O6NIzR8xk08FNWGudAQV6EREJMgr0IhL4ioud7bBh7R6yrWgbU4dN\nPeNLz0yYSUVNBfsr9jsDCvQiIhJkFOhFJPAVFTnbdgL9keojFB4vZOrQrgV6gE0HNzkDCvQiIhJk\nFOhFJPC5A307a+i3F20HYNqwaWd86fT4dKLDor8N9LGxCvQiIhJUFOhFJPAdPgyDB0NERJu7txVt\nA+jSDH1YSBjTR0zXDL2IiAQtBXoRCXxFRR2un99evJ2hfYcytN/QLl1+5oiZfH34a+oa6pxAX1MD\n1dVdrVZERMSvFOhFJPAVFcHw4e3u3l68vUvLbdxmJMzgVMMpdpbs1NtiRUQk6CjQi0jg62CGvrah\nlsySzC4tt3E7Z9g5gGvpjgK9iIgEGQV6EQls1nYY6PeU7aGusa5LLSvdxsSOoU94H7YXb1egFxGR\noKNALyKB7fhxZ017O4F+R/EOoGsPxLqFhoQyOX6yAr2IiAQlBXoRCWyd9KDfVbqLsJAwxg0e163b\nTB06lW1F27ADBzoDCvQiIhIkFOhFJLB1Euh3l+1mTOwYwkPDu3WbacOmcbTmKAfCq5wBBXoREQkS\nCvQiEtg6CfR7yvYwYciEbt/GvQZ/e3WuM6BALyIiQUKBXkQCmzvQt9G2sq6hjuwj2aQNSev2bSbH\nT8Zg2FbyDcTEKNCLiEjQUKAXkcB2+DCEh3/7sGoz+yv2U99Y75VA3z+yP6mxqc6DsbGxcORIt68p\nIiLiDwqvbZhZAAAgAElEQVT0IhLY3C0rjWm1a3fpbgCvLLkBZx39tqJtMHiwAr2IiAQNBXoRCWyd\n9KAH7wX6qUOnsr9iP5VxA6CszCvXFBER8TUFehEJbB0E+t1lu0non0D/yP5eudWk+EnOdYeHQ3m5\nV64pIiLiawr0IhLYOgn0aXHdXz/vlh6XDsDOwfWaoRcRkaChQC8igauhAUpL2wz01lr2lO3xygOx\nbimDUogKi2Jnvyo4dgzq6712bREREV9RoBeRwFVaCo2NbQb6gycOUllb6bX18wChIaGkDUkjM/yo\nM6AHY0VEJAgo0ItI4Dp82Nm2Eej3lu8FYPzg8V695aT4Sey0xc4HLbsREZEgoEAvIoHr0CFnm5DQ\nate+8n0AjB081qu3TI9L52D9EY5GoQdjRUQkKCjQi0jgOnjQ2bYR6LOPZBMZGkliTKJXb+nudJMZ\nh2boRUQkKCjQi0jgOnjQeaHU0KGtdmVXZJMam0qI8e4fY+nxTqebzHg0Qy8iIkFBgV5EAtfBg06Y\nDw9vtWtf+T7GxI7x6DKNjY3s3LmTzMxMGhsbOzx21IBR9Avvx04FehERCRIK9CISuA4ebHO5TaNt\nZH/FfsYM6jzQf/3110yaNInJkyczadIkpkyZQmZmZrvHh5gQJsZPJHNoiJbciIhIUFCgF5HA1U6g\nP3TiEDX1NZ0+EJuVlcWCBQuorKzk2Wef5ZlnnqG8vJzzzjuPTZs2tXvepLhJ7ByKZuhFRCQohPV0\nASIi7Tp4EM4/v9Vw9pFsgA6X3NTU1LBkyRIiIiJYt24do0ePBuDSSy9l3rx5XHvttWzdupXBgwe3\nOjc9Pp3nohspPXaIOC/9KCIiIr6iGXoRCUzV1c6LnTpoWdlRoH/yySfJysrilVdeaQrzACNHjuTN\nN9+kuLiYe++9t81zmzrdnCrszk8gIiLiFwr0IhKYOuhBn30km4jQCEbGjGzz1NLSUv7t3/6NJUuW\ncMkll7TaP336dB5++GFeffVV1q9f32p/epzT6WanKe3GDyAiIuIfCvQiEpg6CvQV2aQMSiE0JLTN\nU5cvX05lZSW//vWv2738I488QkJCAg899BDW2hb7RvQfwcDGCDIjj3W9fhERET9RoBeRwNTBS6U6\nallZW1vL8uXLWbRoEWlpae1evm/fvjz66KNs2LCBzz//vMU+YwzpZig7B5yCTtpcioiI9DQFehEJ\nTO0Eemst2Uey221Z+fbbb1NUVMR9993X6S1uu+024uPj25zJnxQ5ksw4sBUVZ167iIiIHynQi0hg\nOngQ+vaFmJgWw4crD1NdX91uy8pXXnmFxMREFi5c2OktoqOjufvuu/nwww/Zv39/i33pMWOoiIbD\nB3Z1/WcQERHxAwV6EQlM7h70xrQY7qhlZXl5OR988AE33ngjISGe/fF22223ERoayh//+McW4+lD\nnOU6mYVfd6V6ERERv1GgF5HAdPAgjBjRarijlpVvvvkm9fX13HjjjR7fJiEhgSuuuILnnnuO2tra\npvH0hGkAZBbvPNPKRURE/EqBXkQCUztvic0+kk1YSBijBoxqtW/VqlWMGTOGadOmndGtbr/9dkpK\nSnj33XebxuJHjGNwFWQe3XvmtYuIiPiRAr2IBB5rnbaV7bSsTB6YTFhIyxddnzx5kk8++YTFixdj\nTlum05lFixaRkJDACy+80DRmhgwhvQQyq/K79COIiIj4iwK9iASesjKorW0z0OdW5JIyKKXV+Nq1\nazl16hRXXnnlGd8uNDSUpUuX8uGHH1Lh7mrTvz+TykLIbChq1adeREQkkCjQi0jg6aAHfe7RXJIH\nJrcaf++994iJieH888/v0i1vuOEG6urqWLlypTNgDOnV/ThuTnHwxMEuXVNERMQfFOhFJPAUFDjb\n0aNbDB+rOcaR6iMkD2od6NeuXcuCBQuIiIjo0i0zMjJISUlhxYoVTWPpNg6AzJLMLl1TRETEHxTo\nRSTw5LvWrY9q+eBr7tFcgFYz9AUFBeTk5HDRRRd1+ZbGGG644QbWrl1LaWkpAOlRIwHILFWgFxGR\nwKVALyKBp6AAoqIgLq7FcG6FE+hPX0P/2WefATB//vxu3faGG26goaGBVatWATAkNpH46hDN0IuI\nSEBToBeRwFNQ4MzOn9atpmmG/rQlN59++imxsbFMmjSpW7edMmUKycnJrF692hkYOtTpdKMZehER\nCWAK9CISeNyB/jQ5FTnERMYwKGpQi/FPP/2UCy+80OO3w7bHGMPixYtZs2YNVVVVTqAvamRX6S51\nuhERkYClQC8igSc/v81A7+5w07zPvHv9fHeX27gtXryYmpoa1qxZA/HxpJfCidoTHDh+wCvXFxER\n8TafBnpjzCJjTJYxJtsY80gb+40x5inX/h3GmHM7O9cYE2uM+cgYs8+1HdRs36Ou47OMMZc2G59u\njPnGte8p0ywNGGOuN8bsMsZkGmNe9c1vQkQ8duoUHD7cdqBvowe9t9bPu82bN4+YmBjnrbGuJTeg\nTjciIhK4fBbojTGhwNPAZcBE4EZjzMTTDrsMGOv6uh1Y7sG5jwBrrbVjgbWuz7j2LwXSgUXA71zX\nwXXdHza71yLXOWOBR4G51tp04H4v/gpEpCvcPehPC/TW2jZ70P/tb38jJiam2+vn3SIiIli0aBHv\nvvsujXFxpDsNb7SOXkREApYvZ+hnAtnW2hxrbS3wOrDktGOWAC9Zx0ZgoDFmeCfnLgFedH3/InB1\ns/HXrbWnrLW5QDYw03W9GGvtRussgn2p2Tk/BJ621lYAWGtLvPobEJEz5+5Bf1qgL6osoqa+ptUD\nsV9++SUzZ87s9vr55q666iqKi4v56vBhYqthWEiMAr2IiAQsXwb6BKD5otNC15gnx3R07lBr7WHX\n90XAUA+uVdjOtcYB44wx640xG40xi9r6QYwxtxtjNhtjNrv7U4uIj7QT6N0dbpovuamqqmLHjh3M\nnDnTqyVcdtllhIaG8u769QCkNw7RkhsREQlYHgV6Y8zbxpgrjDEB9RCta8a9O60nwnCW4MwHbgSe\nMcYMbOM+f7DWZlhrM+JO64stIl7mfqlUYmKLYXcP+uZLbrZu3UpDQwOzZs3yagmxsbHMnTuXP3/w\nAcTGkl7Vl8zSTBpto1fvIyIi4g2eBvTfATcB+4wxvzHGjPfgnIPAyGafE11jnhzT0bnFrmU0uLbu\nZTIdXSuxjXFwZutXW2vrXMt09uIEfBHpKQUFEB8P0dEtht0z9EkDk5rGvvzySwCvz9ADLFq0iG3b\ntlE8eDDpR8Koqqsi/2i+1+8jIiLSXR4FemvtGmvt3wHnAnnAGmPM34wxtxpjwts57StgrDEm2RgT\ngfPA6urTjlkN3OzqdjMbOOZaTtPRuauBZa7vlwHvNBtfaoyJNMYk4wTzTa7rHTfGzHZ1t7m52Tmr\ncGbnMcYMwVmCk+PJ70REfKSgAEaPbjWcU5HDsH7DiA7/Nuhv2rSJUaNGMWzYMK+XcemlTqOsv4aG\nkl7UAOjBWBERCUweL6ExxgwGbgH+AdgK/BdOwP+oreOttfXA3cCHwG7gDWttpjHmDmPMHa7D3scJ\n0NnAM8CPOzrXdc5vgEuMMfuA77g+49r/BrAL+AC4y1rb4Drnx8AfXffZD/zFNf4hUG6M2QV8Ajxk\nrS339HciIj7Qzkulco+2bln55Zdfen25jdu0adOIi4vjw6oq0nNPAmpdKSIigSnMk4OMMSuB8cDL\nwOJmD6WuMMZsbu88a+37OKG9+djvm31vgbs8Pdc1Xg5c3M45vwJ+1cb4ZqBVTzvX/f/R9SUiPc1a\nJ9BfdlmrXbkVuZw/6vymzyUlJeTl5XH33Xf7pJSQkBAWLlzIh2+9RczRCEb0H6EZehERCUieztA/\nY62daK39tTvMG2MiAay1GT6rTkTOLuXlUFUFI0e2GK5rqOPA8QMtHojdsmULADNmzPBZOZdeeill\nNTVsPX6c9MFpCvQiIhKQPA30v2xjbIM3CxERIdd58JXklr3mC44V0GgbW/Sg37p1KwBTp071WTkL\nFy4EnLV5k/oms7t0tzrdiIhIwOkw0BtjhhljpgPRxphzjDHnur7mA338UqGInD1yXM+kp7RcK99W\nD/pt27aRkpLCgAEDfFbO0KFDmZaczIdAeshQquurm9pnioiIBIrO1tBfivMgbCLwn83GTwA/8VFN\nInK2cgf602bo2+tBf8455/i8pEsvuID/yM3lsSMRgNPpJjU21ef3FRER8VSHM/TW2hettRcBt1hr\nL2r2dZW19m0/1SgiZ4ucHIiLg/79WwznHs0lLCSMxBjnlRInTpwgOzubadOm+bykSxcvph4o2eT8\npUKdbkREJNB0OENvjPl7a+3/AknGmFadYKy1/9nGaSIiXZOTA6mtZ79zKnIYNWAUoSGhAGzfvh3A\nLzP0c6+4gr7Aui07GJk2Ug/GiohIwOlsyU1f17afrwsRESEnB847r9Xw6T3ot23bBuCXGfqI6Gjm\nR0by0b59pMfPVaAXEZGA02Ggt9b+P9f25/4pR0TOWnV1Tg/6v//7VrtyK3K5esLVTZ+3bdvGkCFD\nGDFihF9KWzh0KH8uKGB+QyKflH5CfWM9YSEevcZDRETE5zxqW2mMecIYE2OMCTfGrDXGlBpjWv9f\nV0SkqwoKoLGxVYebytpKSqtK23wg1hjjl9IuGTsWgIZ9DZxqOMXe8r1+ua+IiIgnPO1Dv9Baexy4\nEsgDxgAP+aooETkLtdey0t3hxtWDvr6+np07d/q0//zpJkyYQIIxFG4rBGB70Xa/3VtERKQzngZ6\n978tXwH8yVp7zEf1iMjZysMe9NnZ2dTW1jJ58mS/lWYSE1loLZu/+IowwthRvMNv9xYREemMp4H+\nPWPMHmA6sNYYEwfU+K4sETnr5ORARAScti7+9B70O3fuBGDSpEn+qy0hgUuAiqNHSapOYnuxZuhF\nRCRweBTorbWPAOcBGdbaOuAksMSXhYnIWSYnB5KSIDS0xXDu0Vz6hvdlSJ8hAGRmZmKMIS0tzX+1\nJSRwsevbfgf6KdCLiEhAOZM2DRNw+tE3P+clL9cjImernJxWy23A6UGfMiil6QHYnTt3kpqaSnR0\ntP9qS0ggHjhn9GiO7TrOoXGHKKsqa/pLhoiISE/ytMvNy8C/A+cDM1xfGT6sS0TONu0E+tyjuU0P\nxIIT6P263AaalgFdkpREQWYBnNKDsSIiEjg8XUOfAcy11v7YWnuP6+teXxYmImeRigo4erRVoLfW\nkluR27R+/tSpU+zbt4/09HT/1te/PwwYwCUxMdTX1UM+ejBWREQChqeBficwzJeFiMhZrJ0ON2VV\nZZysO9kU6LOysmhoaPD/DD1AUhLn19URFRVFn4I+WkcvIiIBw9M19EOAXcaYTcAp96C19iqfVCUi\nZ5d2An1OhTPublnZIx1u3JKSiMrOZt68eazfuV6BXkREAoangf5nvixCRM5y7kCfnNxi2N2D3r2G\nPjMzk7CwMMaNG+fX8gCnA8+aNVyybBl//etfyczOpK6hjvDQcP/XIiIi0oynbSs/w3lDbLjr+6+A\nr31Yl4icTXJyYMgQiIlpMezuQZ80MAlwZujHjRtHRESEvyt0Av3JkyycOROAun11ZJVn+b8OERGR\n03ja5eaHwJvA/3MNJQCrfFWUiJxlOuhwE9cnjn4R/QBnhr5HltuAE+iByX36MDhuMOxXpxsREQkM\nnj4UexcwFzgOYK3dB8T7qigROct00oMe4OTJk+Tk5Pi/w42bK9Cb/HwWXrIQcmHb4W09U4uIiEgz\nngb6U9baWvcH18ulrG9KEpGzSn095Od32oN+9+7dWGt7fIae/HwWXboITsIXm7/omVpERESa8TTQ\nf2aM+QkQbYy5BPgT8K7vyhKRs8aBA9DQ0CrQ1zfWk380n5SBzviuXbsAmDhxot9LBGDgQBgwAPLy\n+M53vgPAzr/t7JlaREREmvE00D8ClALfAD8C3gf+j6+KEpGzSDstKwuPF9JgG5pm6LOysggNDSWl\njZl8v0lKgrw8RowYwfCU4VTuqeTwicM9V4+IiAied7lpxHkI9sfW2muttc9Ya7XkRkS6zx3oU1Nb\nDLs73LhfKrV3715SUlJ6psONW1JSU70XXHQB5MPfcv/Wc/WIiIjQSaA3jp8ZY8qALCDLGFNqjHnM\nP+WJSK+3fz+Eh0NCQovh018qlZWVxfjx4/1eXgtjxzr1NjRww1U3QAOs+lANv0REpGd1NkP/AE53\nmxnW2lhrbSwwC5hrjHnA59WJSO+Xk+PMfIeGthjOPZpLqAll5ICRNDY2sm/fPr8FemstuWUn+SSr\nhE25Rzh5qt7ZMW4cnDoFBQVcevGlmDDDhs82+KUmERGR9nT2ptjvA5dYa8vcA9baHGPM3wN/BZ70\nZXEichbooAf9yAEjCQsJIy8vj5qaGr8E+rW7i/m/H2axp+hE01hEWAjfPSeBfx6ZzCCAvXvpm5xM\n/IR48rfm+7wmERGRjnQ2Qx/ePMy7WWtLAb3vXES6z4Me9FlZzhtZfRnoGxstv3h3Fz94cTO1DY38\nYkk6b905h+dvmcH3zk3k7a8P8t215bgKAiDj/AzqD9WzY/8On9UlIiLSmc4CfW0X94mIdK6iwvlq\na4a+IrfpgVhfB3prLT9dtZPn1udyy3lJfHDfPG6ek8T00bFcNCGeX393Mu/fdwFRCcM5EdmH/eu/\nBuDqK64G4KWVL/mkLhEREU90FuinGmOOt/F1ApjsjwJFpBfLdTrZnB7oq+qqKD5Z3GKGfsCAAcTH\n++YF1c9+kctrmwr48fxU/nXxRCLCWv/ROCa+H2/eeR7Fw0dzeNN2Psws4vrvXA/RsGbNGp/UJSIi\n4okOA721NtRaG9PGV39rrZbciEj3uFtWJie3GD69ZWVWVhbjxo3DGOP1ErYfOMqv/7KHyyYN46FL\nx3d4j76RYYyePY1xxw5zz2tbKSi39E/rz54v96BOviIi0lM8fbGUiIj3tfNSqdyjrkA/6Nse9L5Y\nblNb38hDb24nrl8kv/neFI/+whA+MY34imKGhzXy41e+ZvzMNE4dPdX0JlsRERF/U6AXkZ6TmwuD\nB8OAAS2HXTP0KYNSOHnyJAcOHPBJoP/fjfnsLa7kl1dPYkC0h//oOGECAMtn9OXQ0WoYMQWAt957\ny+v1iYiIeEKBXkR6Tk5Oq+U24HS46RPeh7g+cezbtw/w/gOxx6rreOrjfZw/ZggXp53B2vwpToCf\nWJrHA5eM40D1GBgMq99f7dX6REREPKVALyI9p4Me9MkDkzHG+KzDzfJP93Osuo5HLptwZmvzx4yB\n6GjYsYMfzUvh3OHnQCps/3IHp06d8mqNIiIinlCgF5Ge0dAAeXntBvrmHW6MMYwdO9Zrtz5WVcdL\nG/JYPGUEkxIGdHp8C6GhMGkSbN9OWGgIT143h7DkeOpP1bFhg94aKyIi/qdALyI9o7AQ6utbBXpr\nLTkVOS063IwaNYro6Giv3fp/v8ynqraBOy5M7doFpk6F7dvBWsYP68/kjDkQAi+9+Y7XahQREfGU\nAr2I9Ix2etCXV5dTWVvZYobem8ttTtU38Pz6PC4YO4SJI2K6dpEpU6C8HIqKAPiHeVdAIry5ejWN\njWpfKSIi/qVALyI9o50e9DkVznjyoGSstezdu5dx48Z57bartx2irPIUP5rXxdl5cGbowZmlBy5M\nOg9S4MSBHJ5f+40XqhQREfGcAr2I9IycHGc9+siRLYabv1SqqKiIEydOeHWG/rVNBaTG9WXumMFd\nv4ir0w1btwKQFpdGn7Q+APzmuTeprm3obpkiIiIeU6AXkZ6RkwOjRkF4y/7vzV8q5e0ON3uLT/B1\nwVGWzhjVvbfODhwI48bBl18CEGJCmD1zNiHRIRTt+pLn/5brlXpFREQ8oUAvIj2jnZaVORU5xPWJ\no19EP68H+hVfHSA81HDNuQndv9isWbBxI1hnzfycUXOwKZaG/C387pN9VJys7f49REREPKBALyI9\nIze3/R70g77tcBMdHU1iYmK3b1db38jKrQe5ZOJQhvSL7Pb1mD0biouhoMD5mDgbO85Sfaycivws\nnv4ku/v3EBER8YACvYj4X2UllJS0HegrWvagHzduHCEh3f+jat2+Uo6crOXa6d3/ywHgzNCDM0sP\nzEqYBWPAhBiSqvbw0oZ8Dhyp8s69REREOqBALyL+525ZeVqHm4bGBvKP5bfoQe+t5Tbvbj/EwD7h\nnD8mzivXY8oUiIpqWkcf1zeO1MRUYsfGUrlvE8bAf3601zv3EhER6YACvYj4n7tl5Wkz9IXHC6lv\nrCdlUAqnTp0iNzfXK4G+uraBj3YVc9mkYUSEeemPvfBwyMiA9eubhmYnzqY2tZYd27by3Ql9WLXt\nILsPH/fO/URERNqhQC8i/tdOoG/qcDMwmZycHBobG70S6D/eU8LJ2gYWTxnR7Wu1MH8+bNkCx53Q\nPnfkXE6MPgHAiON76B8ZxhMf7PHuPUVERE6jQC8i/pebCzExEBvbYrj5S6XcHW688VKpP39ziLj+\nkcxK6Ubv+bZcdBE0NMC6dQBcMPoCiIfBwwez9q9/4c75Y/gkq5Qvc8q9e18REZFmFOhFxP/cLStP\n6wWfW5FLqAllZMxIr7WsrKlr4NOsUhZOHEpoSDd6z7dlzhyIiIBPPgFgYtxEBkUPIv6ceD766COW\nnjuMoTGR/OaDPVhXe0sRERFvU6AXEf/LyWn1QCw4S25GDhhJeGg4WVlZDBs2jJiYmG7dakNOOVW1\nDXxn4tBuXadN0dFw3nlNgT7EhHD+qPM5MfoEVVVVbFz/OQ98ZxxbC47y113F3r+/iIgICvQi4m+N\nje32oM+pyPF6h5s1u4rpExHKHG8vt3G76CLYuhWOHAHg/FHnUxhbSHSfaN577z2unZ5Ialxf/u+H\nWdQ3NPqmBhEROasp0IuIfxUVQU1Nm4F+f8V+UgelAt4J9NZa1uwu5sJxcUSFh3brWu1asMB5W+xn\nnwFwwagLIBwmzZ7Ee++9R2iI4aFLx5NdUsnbXx/0TQ0iInJWU6AXEf9qpwf9iVMnKDlZwpjYMZSX\nl1NeXt7tQP/NwWMUHz/Fd9J8sNzGbdYs6N8f/vIXAKaPmE5UWBQDpwykoKCA7du3c2n6MKaNHMiT\na/ZSU9fgu1pEROSspEAvIv7VTqDfX7EfgNTYVK89ELtmVzEhBi6aEN+t63QoPBwWLoT33wdriQiN\nYFbCLEoSSwgJCWHlypUYY/jnRRM4fKyGlzbk+a4WERE5KynQi4h/5ec721GjWgzvP+IE+jGxY9i7\n13nDancD/Ue7S8gYHUts34huXadTV1wBBw/Cjh2As+xm58mdnHf+ebz99tsAzEkdzIXj4nj6k/0c\nq67zbT0iInJWUaAXEf8qKIC4OOjTp8Vw9pFsAFIHOTP04eHhJCUldfk2Jcdr2H34OPMnxHWnWs9c\ndpmz/fOfAacffYNtYPKFk9m5c2fTX1AeXjSeY9V1/P6z/b6vSUREzhoK9CLiX/n5MHp0q+H9FfuJ\n7xtP/8j+ZGVlkZqaSlhYWJdv80V2GQDzxvoh0A8bBhkZTYH+vJHnERYSRkia80fsypUrAUgfMYDv\nnpPAs+tyyS076fu6RETkrKBALyL+1U6gzz6S7dUON+v2lTG4bwQTh3evj73HLr8cNm6E8nL6RfRj\nVsIsNp/czIwZM5qW3QA8ctkEIsJC+Pm7mXrZlIiIeIUCvYj4j7UdztCnxqbS0NBAdnZ2twJ9Y6Nl\n3b4yzh87hBBvvx22PVdc4fTYf/99ABYkL+CrQ19x+eLL2bRpEwcOHAAgPiaK+78zlk+zSvlIL5sS\nEREvUKAXEf8pK4Pq6laB/lT9KQ4cO8CYQWPIy8ujtra2W4F+T9EJyipPcYE/ltu4ZWTAiBGwahXg\nBPpG28jwmcMBWOUaB1h2XhLjhvbjF+/tUhtLERHpNp8GemPMImNMljEm2xjzSBv7jTHmKdf+HcaY\nczs71xgTa4z5yBizz7Ud1Gzfo67js4wxlzYbn26M+ca17yljTIspO2PM94wx1hiT4f3fgog0cXe4\nOS3Q5x7NxWK91rJy3b5SAC4YO6TL1zhjISFw9dVOP/qqKmYnziYqLIosskhPT2+x7CY8NIRfLJlE\nYUU1T67Z678aRUSkV/JZoDfGhAJPA5cBE4EbjTETTzvsMmCs6+t2YLkH5z4CrLXWjgXWuj7j2r8U\nSAcWAb9zXQfXdX/Y7F6LmtXZH7gP+NJbP7uItKOdQN+8ZaV3An0Z44f2Z2hMVJev0SXf/a7zLxB/\n/StRYVHMHTmXj3M/5rvf/S6ff/45xcXfLrGZnTKYpTNG8sznOXxdUOHfOkVEpFfx5Qz9TCDbWptj\nra0FXgeWnHbMEuAl69gIDDTGDO/k3CXAi67vXwSubjb+urX2lLU2F8gGZrquF2Ot3WidJ9BeanYO\nwP8HPA7UeO9HF5E2tdODvnnLyr179xIbG8uQIV2bXa+pa2BT3hHO9+fsvNu8eTBoELi62ixIXsD2\n4u0svGohjY2NvPnmmy0O/+kVaQwfEM0/vbGd6lotvRERka7xZaBPAA40+1zoGvPkmI7OHWqtPez6\nvghwv9O9o2sVtnUt1xKfkdbaP3v8U4lI1+XnQ79+TuhtZn/FfvpH9GdInyHd7nDzdX4FtfWNzB0z\nuLvVnrnwcFi8GN59F+rqWJC8AICiPkVMmjSJ1157rcXh/aPCeeLaKeSUneTf3t/t/3pFRKRXCOqH\nYl0z7l3q+2aMCQH+E3jQg2NvN8ZsNsZsLi0t7crtRAS+7XDT8jEWso9kMyZ2DMYYsrKyGDduXJdv\nsTGnnBADGUmx3a22a665Bioq4LPPyBiRQf+I/qzNWcuNN97I+vXrKSgoaHH43DFD+Ifzk3l5Yz6r\nth7smZpFRCSo+TLQHwRGNvuc6Brz5JiOzi12LaPBtS3x4FqJbYz3ByYBnxpj8oDZwOq2Hoy11v7B\nWiGAej0AACAASURBVJthrc2Ii/Nj1wyR3qaTlpUnTpzg0KFD3Zqh35hzhEkJA4iJCu9OpV23cKHz\nFtyVKwkLCePCpAtZk7uGG264AYAVK1a0OuWfL5vAzKRYHn37G7KKTvi7YhERCXK+DPRfAWONMcnG\nmAicB1ZXn3bMauBmV7eb2cAx13Kajs5dDSxzfb8MeKfZ+FJjTKQxJhnn4ddNrusdN8bMdnW3uRl4\nx/7/7N13fM3X/8Dx1ydLpuxEkBAkEULtmjGLVo1Ss2pUi9JStP11V6tb61strdHSKq2tZo3aYoSE\nGBlmhogMSWTKup/fHzdJjZAbcm+E9/Px8Ljc+znnvOPR8s7xPu+jqtdVVXVSVbW2qqq1gcNAH1VV\nj5X/b4UQAigxoS/QFHAp5RL17Otx9qy248v9JvQ38go4EZNK6zoVUG5TxNISevbUtq/UaOhRt4f2\njIA9tGrV6o6yG9B2vZkzrCnW5iaM+f0o8WlypEcIIYTu9JbQq6qaD7wGbAPCgJWqqp5RFGW8oijj\nCx/bAlxEe4B1ITDhXmMLx3wFPKUoyjmgW+GvKfx8JRAKbAUmqqpadMpsAvBL4ToXgH/09XULIe4i\nPV1binJbQh+TFkOeJq9cWlYGR6eQW6ChdZ0KKrcp8txzcOUKBAbSs562qda2C9sYOnQox48fL/46\nb+ZS1ZxfRrQgJTOXEb8GkpqVa+iohRBCVFJ6raFXVXWLqqreqqrWVVX188L35qmqOq/w56qqqhML\nP2908+54SWML37+mqmpXVVW9VFXtpqpq8k2ffV74vI+qqv/c9P4xVVX9Cj97TS3hvnVVVTvJ7rwQ\nenSXlpU3d7iJiIjAyMiIevXq3dcShy8mV2z9fJFnnwUTE1i7lnoO9ahjX4et57cyaNAgFEUpcZce\n4Al3OxaMaMGlpExGLT4qSb0QQgidVOpDsUKISkTHHvS1a9emSpUq97XE4YvXKrZ+voidHXTrBqtX\ng6rSs25Pdl3ahZOrEx07duSvv/6ihH0FQHtI9sdhTQm9ksbAeYe4kppt4OCFEEJUNpLQCyEM424J\nfcoFqhhXoUbVGpw9e/bB6uejK7h+/maDBsGlSxAURM96PcnMyyQgOoBhw4Zx9uxZjh49etehPRpW\n47eXWnL1+g16/3iAA+eSDBi4EEKIykYSeiGEYURFgZkZVKt2y9vnk89Tx74OCsoDJfQPTf18kb59\ntWU3q1bR2bMzpkambLuwjUGDBmFubs5vv/12z+Ft6zqxbmI7HK3NeHHRET78+zTXs/MME7sQQohK\nRRJ6IYRhREWBuzsY3frHTlHLytjYWDIzM++7B/1DUz9fxMEBnnoKVq7E2tSK9h7t2Xp+K7a2tvTv\n35+//vqLGzfu3c2mnos1f09sx8g2tVl2JIqu3+1lyaFIbuTJrbJCCCH+Iwm9EMIwoqPvKLfRqBrO\nXTuHt4P3A3e4OXLxGg2rPwT18zcbOBAiI+HYMXrU7UFIfAhX0q8watQoUlNT2bDh9k6+d7I0M2F6\nn4asn9ie2o6WfLT+DO2/3s3/dpwl+lqW/r8GIYQQDz1J6IUQhlFCD/rYtFiy87PxdnywhD6vQEPI\n5VRa1LYvl1DLTb9+YGoKq1bxjNczAGw5t4UuXbrg7u5eatnNzRrVtGXV+DYsH9uahtWr8sOuc/jP\n3M2g+Yf480g0KZnSEUcIIR5XktALIfQvNxfi4u5I6M9e014kVZTQW1lZUb169TJPHxaXxo08Dc08\nHrKE3t6+uOzGz7khtWxrsSFiA8bGxowYMYJt27Zx5coVnadTFIXWdRz5/aVWBPxfF97q4UNSRg7v\nrTtFy8//ZfTiQNYdv0xGTr4evyghhBAPG0nohRD6FxMDqlpqQl+/fn20FzqXTXBUCgDNaz1kCT1o\ny26iolCOHaOPTx/+vfgvWXlZjBw5Eo1Gw9KlS+9r2up2FkzsXI+dUzuy6fX2jGnvScTVdKasCKH5\njB1MWBbErvD4u7bHFEII8eiQhF4IoX/R0dpXD49b3j577SyWppZUt6lOeHj4fdfPB0WnUq2qOdXt\nLB400vLXt29x2U1v795k52ez8+JOvLy8aNeuHYsXL36gpFtRFPxq2PLuM74c+L8urB7fhsEt3Qm8\nlMxLvx3j6dn72XIqThJ7IYR4hElCL4TQv6KE/vYd+uSzeDt6k52dTXR0NPXr17+v6YOjUmhWy+5B\no9SPorKbVavoWMsfGzMbNp7dCMCYMWMIDw9n37595bKUkZFCi9oOfNrXj0PvdmXWoCfIK9AwYVkw\nw389wsXEjHJZRwghxMNFEnohhP4VJfQ1a97y9tlr2oT+3LlzqKp6Xzv08Wk3iE3Nfvjq5282aBBE\nRWEWHELPej3ZdHYTGlXD4MGDsbOzY968eeW+pKmxEf2b1WT7lI7M6OfHycvX6Tl7P0sPR8luvRBC\nPGIkoRdC6F90NLi6QpUqxW/lFuRyKeUS3g7ehIeHA9zXDn1R/Xyzh7F+vkhR2c3KlfT27k1cRhxB\nV4KwtLRk5MiRrFmzhvj4eL0sbWyk8GLrWuyc1pE2dRz54O/TTFsVQm6+Ri/rCSGEMDxJ6IUQ+hcT\nc0f9/MWUixSoBcUHYhVFwcvLq8xTB0enYGZiRMPqVcsr2vJnZwfdu2vbV9Z7GiPFiA0R2h7048aN\nIy8vj8WLF+s1BBcbcxaPaskb3bxYGxzLS78dlW44QgjxiJCEXgihf9HRJR6IBW2Hm/DwcGrVqoWF\nRdkPtQZFpdCohi1VTIzLJVS9GTQIoqNxPHUe/1r+rA1fC4Cvry+dOnVi/vz5FBTo9wZYIyOFN7p5\nM/P5xhy6eI2XfjtKdq7cOiuEEJWdJPRCCP1SVW1C7+5+y9tFCb2Xo1dxy8qyyskv4HRs2sPZrvJ2\nffuCmRmsXMnzvs8TmhhKaGIoAOPHjycyMpLt27cbJJSBLdz5fnATjkYmM25pEHkFUn4jhBCVmST0\nQgj9SkmBzMwSd+idLJ2wN7cnIiLivg7Eno5NI7dAQzOPh7TDzc1sbaFnT1i5kv4+/VBQWB26GoDn\nnnsOFxcXfv75Z4OF0/uJ6nzVvxH7ziby6cZQg60rhBCi/ElCL4TQr5gY7WsJCb23ozexsbFkZmbe\n1w798ejCA7EPc4ebmw0eDLGxuJ26RHuP9qwKXQWAmZkZr7zyCps2beL8+fOGC6elB+P86/DH4Sj+\nPBJtsHWFEEKUL0nohRD6dY9LpYrq54H72qEPjk6hpr0FLlXNHzhMg+jdG8zNYcUKnm/wPKcTThOe\npP36J06ciImJCbNnzzZoSG/3rE8nH2c+Wn+a4MJvkIQQQlQuktALIfSrKKG/qYY+PSeduIw4vB20\nHW6g7C0rVVUlKCql8uzOA9jYwDPPwOrVDPDuB8Ca0DUAuLm5MXToUBYvXkxKiuESa2MjhdlDmuJa\n1ZwpK06QKZ1vhBCi0pGEXgihX9HR2sOgLi7Fb51LPgf81+HGxsaGatWqlWnaK9dvEJ+WUzkOxN5s\n8GC4epUaIRdp6962uOwGYMqUKWRmZrJw4UKDhmRrYcqsQU8QnZzFZ5ulnl4IISobSeiFEPoVE6Pd\nnTf674+bm1tWFnW4URSlTNMGRVWy+vkivXqBpaW27Mb3eULiQzh3TfsNTpMmTejSpQs//vgjeXl5\nBg3ryTqOjPOvy1+BMewK188lV0IIIfRDEnohhH7dpQe9gkI9h3qEh4ffX/18VAoWpsbUd7Mpr0gN\nw8oKnn0W1qxhgHdfgOJuN6Ddpb98+TKrV6++2wx6M/Upb7xdrfnw7zNk5UrpjRBCVBaS0Ash9Osu\nPeg9bD3Q5GqIiYm5rw43wdEpNK5pi6lxJfxjbPBgSEzE4/hF2tRsw1+n/yr+6JlnnsHb25tvv/0W\nVVUNGpaZiRGfP9eI2NRsZu88Z9C1hRBC3L9K+DehEKLSyM+H2Ni7drg5e1ZbelPWHfobeQWEXkmj\nWWWrny/y9NNgbQ0rVjC88XBOJZwi5GoIAEZGRrz99tsEBwezbds2g4fWsrYDg1u48+v+S4RfTTP4\n+kIIIcpOEnohhP7ExYFGc0tCr6oqEdcibmlZWdYd+pOXr5OvUWle2erni1hYaG+OXbuWQd7PYWJk\nwtKTS4s/fvHFF3F3d+ezzz4z+C49wDtP18fG3ITpG85UyPpCCCHKRhJ6IYT+lNCD/kr6FdJy0vB1\n8iUiIgJFUahXr16Zpi06ENu0MtwQezeDBkFyMk6HQnjG6xn+PP0nBZoCQHvR1Ntvv01AQAD79u0z\neGj2VmZMecqbwxeT2RWeYPD1hRBClI0k9EII/SmhB31YUhgAvs6+hIeH4+npibl52S6GCo5OwdPJ\nCkfrKuUWqsH16AG2trBiBS82fpEr6VfYHbm7+OMxY8bg6urK559/XiHhDW3lQR0nK778J5z8Ak2F\nxCCEEEI3ktALIfSnpIQ+sTChL9yhL2v9vKqqBEelVO7deYAqVaBfP1i3jmdrPYVtFVv+OPlH8ccW\nFhZMmzaNHTt2cOTIEYOHZ2psxNs963M+IYOVxy4bfH0hhBC6k4ReCKE/MTFgb6+9IbVQaGIoduZ2\nuFi6FPegL4vo5CyuZeZWvgulSjJ4MFy/jvnu/QxsMJA1oWvIzM0s/nj8+PE4ODgwY8aMCgmvR0NX\nWtSyZ9aOs2TIDbJCCPHQkoReCKE/JfSgD0sKw9fJl5iYGLKzs8uc0FfaC6VK0rWr9hueFSt48YkX\nyczLZH3E+uKPbWxsePPNN9m8eTMBAQEGD09RFN7v5UtSRg6LD1wy+PpCCCF0Iwm9EEJ/SuhBX5TQ\nnzlzBoCGDRuWacrg6BSsq5jg7VrJLpQqiZkZ9O8P69fT3rUltWxr8XvI77c8MmnSJFxdXXnvvfcq\npONMUw97uvm68MuBS6TfMOzttUIIIXQjCb0QQn9u26FPzk4mITMBX2dfQkNDAWjQoEGZpgyOSqWJ\nux3GRkq5hlph+veH9HSM9u5jVJNR7Liwg8jUyOKPrays+OCDD9i3bx/bt2+vkBAnd/XmenYevx+M\nLPVZIYQQhicJvRBCPzIyICXlloT+5gOxZ86cwc3NDXt73UtnMnLyCb+aRrPKfiD2Zl26gKUlbNjA\nS01fAmDR8UW3PDJ27Fhq165dYbv0jWra0s3XhYX7L5Emu/RCCPHQkYReCKEfMTHa15sT+ptaVp45\nc6bM5TYnY1LRqFTeG2JLYm6ubWG5YQMeVd3pWa8ni44vIl/z3yFUMzMzpk+fTnBwMGvWrKmQMIt3\n6QMiK2R9IYQQdycJvRBCP+7SstLCxAJ3G3fCwsLKXG5TfKGU+yOU0AP06QOXL8OJE7zS7BVi02PZ\nen7rLY8MHz6cBg0a8M4775CTk2PwELW79K78ckB26YUQ4mEjCb0QQj9KuCU2LCkMHycfYi/HkpmZ\neV8HYuu5WGNraVqekVa8Xr1AUWDDBp71fhZXK1cWBi+85RFjY2NmzZrFhQsX+PHHHyskzDe6ecku\nvRBCPIQkoRdC6EdMDBgZQfXqxW/d3uGmLDv0Go1KcHQqzR+FdpW3c3aGtm1hwwZMjU0Z3WQ0m89u\n5kr6lVse69GjB8888wwzZswgISHB4GH61bCla30XFgVcIitX+tILIcTDQhJ6IYR+REdDjRpgYgJA\nVl4WUalR+Dr91+GmLDv0F5MyuZ6dR7Naj9CB2Jv16QPBwXD5MmOajaFALWDx8cV3PDZr1iyysrL4\n8MMPKyBIeLVTXVKy8lh5NKZC1hdCCHEnSeiFEPpxWw/6iKQIVNTiA7Fl7XATHK2tn38kbogtSe/e\n2teNG6nnUI8unl1YELzglsOxAD4+Prz22mv88ssvhISEGDzMFrUdaFnbnoX7L5FXoDH4+kIIIe4k\nCb0QQj9u60EfmqjdlS/aoS97//kUqpqbUMfJulzDfGjUrw9168KmTQBMbDmR6OvRbDq76Y5HP/ro\nI+zt7Zk4cSIajeGT6lc71SU2NZtNJ6+U/rAQQgi9k4ReCFH+NBpt15abEvpTCacwNTKlnn09QkND\n7+tAbLNa9hg9KhdK3U5RoGdP2LMHcnLo49MH96ru/Bh45wFYe3t7vv32WwICAvj1118NHmpnHxd8\nXG34ec8FNBrD98UXQghxK0nohRDlLzERcnJuKbk5nXAaX2df4mLjyMzMLNMO/fXsPM7GZ9DsUTwQ\ne7MePSArCw4cwMTIhAktJ7Dr0q7if9242ciRI+nYsSNvv/028fHxBg1TURRe7VSXs/EZ7I4w/OFc\nIYQQt5KEXghR/iIjta+1axe/dSrhFH4ufvd1IPZETCrAo5/Qd+4MpqawbRsALzd7mSrGVZgTOOeO\nRxVFYf78+WRlZTF16lRDR8qzjd2oaW/Bz3suGHxtIYQQt5KEXghR/m5L6NNy0oi+Hk0jl0b31bIy\nOCoFIwWecLct50AfMtbW0K5dcULvZOnE0EZDWRKyhOs3rt/xuI+PD++99x5//vkn2wrHGIqJsRFj\n/etwLCqFo5HJBl1bCCHErSShF0KUv6KEvlYtQFtuAxTv0FerVg0HBwedpwuOTsHb1QYb80fsQqmS\n9OgBJ09CXBwAr7d6ncy8TH478VuJj7/zzjv4+vry8ssvk5qaasBAYWBzdxyszGSXXgghKpgk9EKI\n8hcZCY6OYGMD3JrQnzlzpkzlNgUalRPRqY9uu8rb9eypfd2+HYBmbs1oU7MNPwb+SIGm4I7Hq1Sp\nwu+//05cXByTJ082ZKRYmBkzum1tdoUnEBaXZtC1hRBC/EcSeiFE+bt0CTw9i395Kv4U1mbWuNu4\nl7ll5bmEdNJz8h/9+vkijRuDq2tx2Q3AtDbTuJBygXXh60oc0rJlS9577z2WLFnC33//bahIARjR\npjZWZsbM2yu79EIIUVEkoRdClL/IyFsOxJ5OPI2fix+RkZFkZmbSuHFjnacKjtKWkTw2O/RGRtC9\nO+zYoW3/CfSr3496DvX4JuAbVLXkNpEffPABTZs2Zdy4cSQmJhosXFtLU4Y96cGmk3HEJGcZbF0h\nhBD/kYReCFG+VBWioooTelVVORV/ikYujTh58iRAmRL6oKgUHKzMqOVoqY9oH049ekBSEgQHA2Bs\nZMy0NtM4euUo+6L2lTjEzMyMJUuWkJqayqhRowx64dTLHepgrCgs2HfRYGsKIYT4jyT0QojyFR8P\nN24UJ/RXM65yLfsafi5+hISEoCgKfn5+Ok8XHJ1CMw97FOURvVCqJF27al937y5+a+QTI3G2dGbm\nwZl3Hebn58esWbPYsmULs2bN0neUxVyrmjOgeQ1WHoshMT3HYOsKIYTQkoReCFG+ijrcFNbQFx2I\nLdqh9/LywtJSt932axk5XErKpEXtx6Tcpki1auDrC7t2Fb9lYWrBa61eY/O5zZxJOHPXoRMmTKB/\n//68++67HD582BDRAjDWvy55BRoWBVwy2JpCCCG0JKEXQpSv23rQn0o4BVC8Q//EE0/oPFVw9GNW\nP3+zLl1g/37Iyyt+a0LLCViYWPDtoW/vOkxRFH799Vdq1qzJkCFDSElJMUS0eDpZ8XQjN5YeiiLt\nRl7pA4QQQpQbSeiFEOXrUuEO7U096F2tXDHXmHPx4sUy1c8fi0rG1FihUY1H/EKpknTuDJmZcPRo\n8VtOlk6MaTqGZSeXEZsWe9ehdnZ2rFixgtjYWEaPHn3Xg7Tl7dWOdUnPyWfp4SiDrCeEEEJLEnoh\nRPmKjARnZ7CyAuBk/En8XPw4dUq7U1+mHfqoFPxq2GJuaqyPSB9unTppX2+qoweY2mYqBWoBsw7d\nu0a+VatWzJw5k/Xr1/PVV1/pKchb+dWwxd/bmUUHIrmRd2fPfCGEEPohCb0Qonzd1LIyryCPUwmn\naFqtaZk73OTmawi5fJ3mj0v/+ds5OsITT9yR0Hvae/JCoxf4+djPxGfE33OKyZMnM3ToUN5//322\nbt2qz2iLvdqxLkkZOawKumyQ9YQQQkhCL4Qob5GRxQdiw5PCyS3IpambNqG3tbXFw8NDp2nOXLlO\nbr7m8ayfL9K5MwQEQM6tnWM+8P+AnIIcvj1491p60NbT//LLLzRu3JihQ4dy4YL+L39qXceBph52\nLNh3gfwCw7XOFEKIx5kk9EKI8qPR3NKD/vjV4wA0qdaEkJAQGjdurHP7yaAo7WHOxzqh79JF2wL0\ntm413o7eDPUbyk/HfiIx896XSFlaWrJu3TqMjIzo168fGRkZ+owYRVGY0KkeMcnZbD4Vp9e1hBBC\naElCL4QoP3Fx2t3kooQ+7jgWJhZ42Xtx6tSpMtXPB0Wl4O5ggUtVcz0FWwn4+2tvjr2pfWWRD/w/\nIDsvm+8OfVfqNJ6enixfvpzQ0FDGjBmj90OyXeu74OVizU+7L6DRGOZArhBCPM4koRdClJ/z57Wv\n9eoB2h36xq6NiYmOIT09Xef6eVVVORaV8vjWzxextYXmze+ooweo71SfIX5DmBM4h6SspFKneuqp\np/jyyy9ZuXIlM2fe/XKq8mBkpDCxcz0i4tPZduaqXtcSQgghCb0QojzdlNCrqsqJqydoWq0pISEh\ngO4dbi6nZJOYnkPz2g76irTy6NxZW3KTlXXHRx/6f0hWXhYzA3RL0N966y0GDhzIu+++y44dO8o7\n0lv0fqI6dZ2t+P7fc7JLL4QQeiYJvRCi/Jw/D6am4O5OZGok13Ou06RaE4KCgjA2NqZRo0Y6TVNc\nP/+479CDNqHPy4NDh+74yNfZl+GNh/ND4A9cTiu9q4yiKCxatAhfX1+GDh1KZNElYHpgbKQwqasX\nEfHpbDkttfRCCKFPktALIcrP+fPaDjcmJsUHYpu6NSUoKIiGDRtiYWGh0zRBUSlYVzHBp5qNPqOt\nHNq21dbR799f4sefdv4Ujaph+p7pOk1nbW3NunXryM/Pp3///mRnZ5djsLd6tnF1vFys+f7fcxTI\nLr0QQuiNJPRCiPJz/nxx/fyJqycwVozxc/YjKCiI5s2b6zxNUFQKTT3sMDbSrSPOI61qVWjSBPbt\nK/Hj2na1mdBiAotPLCYsMUynKb28vFi6dCnHjx9n/Pjxejska2ykMLmbF+cTMth08ope1hBCCKHn\nhF5RlJ6KokQoinJeUZR3SvhcURTlh8LPTyqK0qy0sYqiOCiKskNRlHOFr/Y3ffZu4fMRiqL0uOn9\n5oqinCr87AelsG+eoihTFUUJLVx7p6IotfT3uyHEI05Vb0noj189Tn2n+lyLv0ZiYqLOCX1GTj7h\nV9NoJuU2/+nQQVtHn5tb4sfv+7+PlakV7+16T+cpn332WaZPn86SJUv46aefyivSOzzj54aPqw2z\nd8ouvRBC6IveEnpFUYyBucDTQANgqKIoDW577GnAq/DHWOBnHca+A+xUVdUL2Fn4awo/HwI0BHoC\nPxXOQ+G8r9y0Vs/C948DLVRVbQysBr4pr69fiMdOQgJkZPyX0McdL66fB3RO6E9Ep6JRH/P+87fz\n94fsbAgOLvFjJ0sn3m73Nn+H/83BmIM6T/vhhx/y7LPP8sYbb3DgwIHyivYWRkYKU57y4mJiJmvk\n9lghhNALfe7QtwLOq6p6UVXVXGA50Pe2Z/oCS1Stw4CdoihupYztC/xe+PPfgX43vb9cVdUcVVUv\nAeeBVoXzVVVV9bCq/XflJUVjVFXdrapqUeuIw0DNcv0dEOJxclOHm8TMRGLTY2larSnHjh3D2NhY\n5w43RyOTMVKgqYedHoOtZNq3177epewGYErrKbhZu/HG1jfQqLrd0GpkZMQff/yBp6cnAwcO5MoV\n/ZTF9GhYjSbudny3I4Ls3AK9rCGEEI8zfSb0NYCYm359ufA9XZ6511hXVVWLWiZcBVx1mOtyCe/f\nbgzwT0lfiKIoYxVFOaYoyrHExHvfyijEY+umhD4oTrsr38ytWZkPxAZeSqZhdVtszE31FWnl4+IC\nPj53PRgLYGVmxTdPfcPRK0dZfHyxzlPb2dmxbt060tPTGTZsGAUF5Z9wK4rC+718iU/L4dcDF8t9\nfiGEeNxV6kOxhTvuD1yUqSjKcKAFUGIzZ1VVF6iq2kJV1RbOzs4PupwQj6Zz58DYGGrVIjA2EAWF\n5m7Ny3QgNie/gODoFFp5Sv/5O/j7w4EDoLn77vsLjV6gvUd73t35LinZKTpP3bBhQ3766Sf27t3L\n559/Xh7R3qFlbQe6N3Bl3t6LJGXk6GUNIYR4XOkzoY8F3G/6dc3C93R55l5j4wvLaCh8TdBhrpol\nvE/hHN2A94E+qqrK3zJC3K/z56FWLTAzIzA2kAbODbieeL1MB2JPXb5OTr5GEvqSdOgAqalw+vRd\nH1EUhR+f/pFr2df4eM/HZZp+xIgRvPjii3zyySfsu0dpz4P4v6frk51XwOx/z+llfiGEeFzpM6E/\nCngpiuKpKIoZ2gOrG257ZgMworDbTWvgemE5zb3GbgBGFv58JLD+pveHKIpSRVEUT7SHXwML50tT\nFKV1YXebEUVjFEVpCsxHm8wXfWMghLgf4eHg7Y2qqgTGBtKqRqsyH4g9cikZ0O7mitv4+2tf71F2\nA9CkWhPGNx/P3KNzORl/skxLzJ07l7p16zJs2DCuXbt2v5HeVV1na1540oM/A6MJv5pW7vMLIcTj\nSm8Jvaqq+cBrwDYgDFipquoZRVHGK4oyvvCxLcBFtAdYFwIT7jW2cMxXwFOKopwDuhX+msLPVwKh\nwFZgoqqqRcWgE4BfCte5wH+18jMBa2CVoignFEW5/RsOIYQuCgogIgIaNiTqehSJWYnFCX1ZDsQG\nXkrG29UaByszPQdcCdWqBe7u9zwYW2RGlxk4WDgwduNYCjS618Tb2NiwfPlyEhISGD16tF7600/p\n5k1VcxM+/Pu03vrfCyHE40avNfSqqm5RVdVbVdW6qqp+XvjePFVV5xX+XFVVdWLh541UVT12r7GF\n719TVbWrqqpeqqp2U1U1+abPPi983kdV1X9uev+Yqqp+hZ+9Vlh7T+F4V1VVmxT+6KPP3w8hzr6K\nagAAIABJREFUHlmRkXDjBvj6cuTyEQBa1WjF0aNHdT4Qm1+g4VhkMk96Ouo52EqsQwftDn0pibCD\nhQOze87mSOwRZh+ZXaYlmjVrxjfffMPGjRv55ZdfHiTaEtlbmfHu074cjUxhTfDtVZhCCCHuR6U+\nFCuEeEiEFd5Q2qABgbGBVDGuQkOnhhw+fJg2bdroNEVoXBqZuQVSP38v/v4QFwcXLpT66FC/ofTx\n6cP7u97n3LWy1axPmjSJzp07M3XqVC5dunS/0d7V881r0szDji+3hHE9K6/c5xdCiMeNJPRCiAcX\nGqp99fUl8Eogzdyacf7sea5fv65zQh9YWD8vCf09dOigfS2ljh60B2Tn9ZqHuYk5YzaM0bk3PWj7\n0y9evBhFURg1ahSae3TWuR9GRgoz+vmRkpXL19vCy3VuIYR4HElCL4R4cGFh4OZGflVrgq4E0apG\nKw4dOgSgc0J/5FIytR0tca1qrs9IKzdfX3By0qmOHsDNxo3ve3zP/uj9zAmcU6alatWqxezZs9m3\nbx/ff//9/UR7Tw2r2zKmvSd/Holm31m530MIIR6EJPRCiAcXGgq+vpxJOEN2fjZP1niSQ4cO4ejo\niJeXV6nDNRqVo5HJsjtfGkXR3hqrww59kRFPjKCXVy/e3vF2mbvejBo1ij59+vDee+8RWvSvMOVo\nWncf6jpb8X9rTnI9W0pvhBDifklCL4R4MKqq3aFv0IAjsf8diD106BCtW7dG2y323sKvppOalScH\nYnXh76+tob9yRafHFUVhcd/F2FvYM2T1ELLysnReSlEUFixYgI2NDSNGjCAvr3yTbnNTY74b1ISE\n9Bw+3Vj+3zAIIcTjQhJ6IcSDiY2F9HRtQn/5CA4WDthjT1hYmM7lNgcvJAHQtp4k9KUqQx19EWcr\nZ5Y+t5TwpHDe2PpGmZZzdXVl3rx5BAUF8fXXX5dprC6auNsxoVNd1gRfZuvpuHKfXwghHgeS0Ash\nHkxRhxtfXwJiAmjr3pbAwEBA9/r5gPNJ1HG2ws229PaWj70mTcDaWuc6+iJd63TlnfbvsDB4ISvP\nrCzT2AEDBjBkyBA+/fRTTp4sW9mOLl7v4kXjmra8tfok0dd0/xcEIYQQWpLQCyEeTGGCl1DHlYhr\nEbR3b8+hQ4cwMjKiVatWpQ7Pzddw5FIy7eo66TvSR4OJCbRtW6Yd+iKfdPqENjXbMGbDGMISw8o0\n9scff8Te3p5Ro0aVe+mNmYkRc4c1QwEm/BnEjTzdL8MSQgghCb0Q4kEdPw41axKQqW0/2KFWBw4d\nOkSjRo2wtrYudXjI5VSycgtoV08Sep35+8OpU5CcXPqzNzE1NmXlwJVYmlry3IrnSMtJ03msk5MT\n8+bN4/jx43z55ZdljbhU7g6WzBrUhNOxaXy0Xm6RFUKIspCEXgjxYE6cgCZNOBB9gCrGVWji0oQj\nR46UqdzGSIE2daR+XmdFdfQBAWUeWrNqTVYNXMX55POMWDeiTP3pn3vuOYYNG8aMGTM4ceJEmdcu\nTbcGrkzqUo+Vxy6zYN/Fcp9fCCEeVZLQCyHuX3Y2hIdD06bsj97PkzWfJPxMOGlpabRv316nKQLO\nJ+FXwxZbS1M9B/sIadUKzMzKXEdfxL+WP991/471Eev5Yv8XZRr7ww8/4OjoyKhRo8jNzb2v9e/l\njW7e9Grsxldbw+WQrBBC6EgSeiHE/Tt9GgoKyGxcn+C4YNq7t2fv3r0AdOzYsdThmTn5HI9Opa3U\nz5eNubk2qb+POvoik56cxAuNXuCj3R+x+exmncc5Ojoyf/58QkJC+OKLsn0zoAsjI4XvBj5BE3c7\nJi0/wYFzSeW+hhBCPGokoRdC3L/jxwE4Ul2lQC2gvUd79uzZQ926dalZs2apwwMjk8nXqLSX+vmy\n8/eHoCDIzLyv4YqisKD3AppUa8LQNUMJTdS9D3zfvn0ZPnw4n3/+OccL/xsoT+amxiwa2RJPRyte\nWXKMY5FlOysghBCPG0nohRD37/hxqFqVvTkRGClGtK7Rmv3799OpUyedhgecS8LMxIgWte31G+ej\nyN8f8vPh8OH7nsLS1JK/h/yNhakFff7qQ3K27onz7NmzcXJy0lvpjb2VGUtffhI3W3NGLgosvqtA\nCCHEnSShF0Lcv6NHoUULdl7aRXO35kSdjSIlJUWnchuAA+eTaO5hj7mpsZ4DfQS1aQNGRvddR1/E\nw9aDdYPXEZMWw6BVg8gr0K0lpYODAwsWLODkyZN89tlnDxTD3TjbVOHPV1pT3c6CUYuOsvX0Vb2s\nI4QQlZ0k9EKI+5OVBSEhZLRpzpHYI3T17Fqm+vmr128QfjWdjj7O+o700VS1KjRt+sAJPUBb97bM\nf3Y+Oy/tZOq2qTqP6927NyNGjOCLL74gKCjogeMoSTVbc1aNb0PDGlWZsCyIpYej9LKOEEJUZpLQ\nCyHuT1AQ5Oezz9eSfE0+Xet0Zc+ePXh6euLh4VHq8L1nEwDo7OOi70gfXR06aEtuyqHkZVSTUUxt\nPZU5R+ewIGiBzuO+//57XF1dGTVqFDk5OQ8cR0nsLM1Y9vKTdPR25oO/T/POmpPk5MvlU0IIUUQS\neiHE/Sms3d5pFU8V4yo86fYku3fvpkuXLjoN3x2eiJutOd6upV8+Je7C3x9u3IBjx8pluq+f+poe\ndXswcctE9kXptvNvb2/PggULOH36NJ9++mm5xFESSzMTfhnZkomd67L8aAyD5h8mNjVbb+sJIURl\nIgm9EOL+HD4Mdeuy8+oh2rq35dTxU1y/fp0ePXqUOjQ3X8OB80l08nFBURQDBPuIKur1/wDtK29m\nYmTC8ueXU9e+LgNWDiAyNVKncb169WLUqFF8/fXXBAYGlkssJTE2UnirR33mDW/G+fh0ev5vH2uD\nL8utskKIx54k9EKIslNVOHSIxHZNCIkPoatnV7Zv346iKHTt2rXU4ceiksnIyaez1M8/GGdn8PUt\nlzr6InbmdmwYuoF8TT59/upDRm6GTuP+97//Ub16dYYOHcr169fLLZ6S9PRz45/J/tR3s2HqyhAm\nLAsmIf2GXtcUQoiHmST0QoiyO3cO4uLY2dQOgK51tAl9y5YtcXBwKHX43ohETI0V2kr/+QfXoQME\nBEBB+dWUezt6s+L5FZxJPMOL615Eo2pKHWNnZ8fy5cuJjo7mpZde0vuuuYejJcvHtuHtnj7sDEug\n63d7WXIokgKN7NYLIR4/ktALIcpu1y4ANtsn4mTphJelF0eOHNGp3AZgd0QCrTwdsK5ios8oHw/+\n/nD9Opw6Va7Tdq/bne+6f8ff4X/z8e6PdRrTtm1bvvzyS9auXcucOXPKNZ6SGBspTOhUj61vdOCJ\nmnZ8tP4M/eYGcPJyqt7XFkKIh4kk9EKIstu9mwL3GvwTH0DPej3Zu2cvGo2G7t27lzo0+loWZ+Mz\npLtNeenQQftajmU3RSY/OZmXmrzEZ/s/Y8XpFTqNmTZtGr1792batGkcOXKk3GMqSR1na/4Y04of\nhjblatoN+s4N4N21p0jOLP8Lr4QQ4mEkCb0Qomw0Gti9m8AejbiWfY1eXr3YsmULVatW5cknnyx1\n+LYz2suBejSspu9IHw8eHlCrFuzZU+5TK4rCT71+op17O0avH01wXLBOY3777Tdq1qxJv379uHz5\ncrnHdbd1+zxRnZ3TOvJSO09WHouh87d7+OOQlOEIIR59ktALIcrm9GlITGRzAxOMFCOe8nyKTZs2\n8fTTT2Nqalrq8G1nruLrVhV3B0sDBPuY6NYNdu8u1zr6IlVMqrB28FqcLJ3ou7wvVzNKv63VwcGB\nDRs2kJGRQd++fcnMzCz3uO6mqrkpHz7bgH8md6Bh9ap8uP4MvX88wNHIZIPFIIQQhiYJvRCibDZv\n1r6YXqKte1vOnz5PfHw8ffr0KXVoYnoOQdEp9Gjoqu8oHy/dukFqqvayLz1wsXJhw9ANJGcn89yK\n58jJL/0CKT8/P5YvX87x48cZPnw4+fn5eontbrxdbVj28pP89EIzUrNyGTjvEFNWnCAhTbrhCCEe\nPZLQCyHKZuNGLrdrxIlrZ+jl1YsNGzZgbGzM008/XerQHaHxqKqU25S7olahO3bobYkm1ZqwpN8S\nDl8+zLhN43TqYtOrVy++//57/v77b8aN021MeVIUhWcaufHvtI681rkem0/G0fnbPSzYd4Hc/NI7\n9wghRGUhCb0QQncJCXD4MGueqgHAc/WfY8OGDXTo0AF7e/tSh287c5VajpbUr2aj70gfL87O0LSp\nXhN6gAENBjC943R+D/mdWYdm6TRm0qRJfPTRRyxatIi33nqrQi6BsjQz4c0ePmyf4k/rOo58sSWc\np2fvY/+5RIPHIoQQ+iAJvRBCd5s3g6qyyuEqjV0bY5pmyunTp3Uqt0m7kcfBC0n0aFhNbofVh27d\n4OBB0HO9+ocdP+T5Bs/z9r9v88+5f3QaM336dF577TW+++473nzzzQq72bW2kxW/jmrJolEtyNeo\nvPhrIG+tCiH9Rl6FxCOEEOVFEnohhO5Wrya2fnUCkk8wsMFA1qxZA0Dfvn1LHbr9TDx5BSo9/aTc\nRi+eegry8vTSvvJmRooRv/X9jcaujRmyZgjhSeGljlEUhdmzZ/P6668za9YsXn31VTSaiit56VLf\nle1T/Hmtcz3WBF/m6dn7OXLxWoXFI4QQD0oSeiGEbhITYds21vT3BWBgg4GsWLGCFi1aUKdOnVKH\nrz8Ri7uDBU3d7fQd6eOpfXuoUgX+/VfvS1mZWbF+yHrMTczp81cfkrKSSh1jZGTE7Nmzeeedd5g/\nfz6DBg0iKytL77HeTRUTY97s4cOq8W0xNlIYsvAw326LkBaXQohKSRJ6IYRuVq2CggJWuSXTyKUR\nxqnGBAUFMWTIkFKHJqTfIOB8En2fqCHlNvpiYaFN6rdvN8hyHrYerBu8jpi0GHou7UlaTlqpYxRF\n4YsvvuC7775j7dq1+Pv7c+XKFQNEe3fNa9mzZVIHBjavyZzd53nx1yMkZZTexUcIIR4mktALIXSz\ndCmXWnpx4NpxBjcczMqVKwEYNGhQqUM3hcShUaFf0+r6jvLx1rOn9p6AqCiDLNfWvS2rB64mJD6E\n3n/1Jjsvu9QxiqIwdepU1q9fT0REBM2aNWOHng/zlsaqignfPP8EM59vTFBUCr1+2E9QlPStF0JU\nHpLQCyFKd/IkHDrE7/1qo6Dw4hMvsmLFCtq2bYu7u3upw9eHXKGBW1XquUh3G70qOpy8caPBluzl\n3Ys/nvuD/VH7eX7V8+QW5Oo0rnfv3hw6dAhHR0d69OjBu+++S15exR5OHdjCnXUT2mFhasyQBYdZ\nHWSYW26FEOJBSUIvhCjd3LlozKvwm3k4Xet0JTUqlZMnT+pUbnMpKZOQmFTZnTcEb2/w8YENGwy6\n7BC/Icx7dh5bzm2hz199yMzVrdOOn58fR48e5eWXX+arr76idevWBAcH6znae2tQvSrrJ7anlacD\nb64K4at/wtFIXb0Q4iEnCb0Q4t5SU2HpUvaM7kRUegyjm4xm8eLFmJmZMWzYsFKHrwm6jJECvZ+Q\nhN4g+vaFPXvg+nWDLju2+Vh+7fMrOy7uoPvS7qRkp+g0ztLSkgULFrB69WpiY2Np2bIl06ZNIyMj\nQ88R352tpSm/jW7FC096MG/vBcYvDSIzx7A33QohRFlIQi+EuLfFiyEri8XNjLCtYkuvOr34448/\n6Nu3L46OjvccmlegYcWxGDr7uOBma2GggB9zffpo21du22bwpV9q+hIrn1/J0dijtF3UlrPXzuo8\ndsCAAYSHh/PKK68wa9YsvL29WbhwIfn5FZNImxob8Vk/Pz7u3YB/w+IZOO8QcddLPyMghBAVQRJ6\nIcTd3bgBM2cS360NK6/u5IVGL/Dv1n+5du0ao0ePLnX4zrAEEtNzGNrKwwDBCgBatwYnJ1i/vkKW\nH9BgADte3EFSVhItF7Zk09lNOo+1s7Nj3rx5HDx4EE9PT8aOHUvjxo1ZtWoVBQUFeoy6ZIqiMLqd\nJ7+ObEl0chb95gZwOtaw//IhhBC6kIReCHF3ixZBXBzzh3mTW5DLpCcn8euvv1KjRg26d+9e6vA/\nA6NxszWnk4+zAYIVABgbQ+/esGmT9huyCtCxdkeOvXKMuvZ16f1Xbyb9M4msPN17zrdp04YDBw6w\nbt06NBoNgwYNon79+ixcuJAbFfA1da7vwqrxbTBWFAbNP8S/ofEGj0EIIe5FEnohRMlycuCrr8ht\n34afk7fxdL2nMUox4p9//mHMmDEYGxvfc3hMchb7zyUyuKU7JsbyR41BDR0KaWmwZUuFhVDLrhYB\nLwUwqdUkfgz8kabzm7IvSvdbbBVFoV+/fpw5c4bVq1dja2vL2LFjqV69OlOmTCE0NFSP0d/J160q\nf09sR11na8b+cYzFAZcMur4QQtyL/C0rhCjZjz9CTAwrX/XnasZVJj85mTlz5mBqasr48eNLHb7s\nSDQKMLhl6W0tRTnr3BlcXWHZsgoNw8LUgtlPz2bXiF3k5OfQ8beODF49mKhU3fvkGxsbM2DAAI4e\nPcquXbvo3r07c+fOpWHDhjRt2pQZM2YYLLl3qWrOinGt6erryicbQ5m+4YzcLCuEeCgoqip/GJVF\nixYt1GPHjlV0GELoV2Ii1KuHpn07GvXSJl8BLwTg4e5Bnz59WLp06T2HZ+bk0+bLnbSr58TPw5sb\nImJxuzfegJ9/hvh4sLOr6GjIystiZsBMvg74GhWVSa0m8WbbN3G2Kns5VmJiIsuWLWPVqlUcPHgQ\nAC8vL7p27Urnzp3p1KkTLi4u5f0lFCvQqHy5JYxfDlyiS30XfhjaFOsqJnpbTwjx+FIUJUhV1Ral\nPSc79EKIO02fDpmZrJ7cjdDEUD70/5Dff/ud9PR0Jk+eXOrwlcdiSLuRzyv+dfQfqyjZCy9Abi6s\nXl3RkQBgaWrJx50+JuK1CAb4DmDmwZl4zvbk7R1vk5CZUKa5nJ2deeONNwgICCA2Npa5c+fi7e3N\nsmXLGDx4MK6urjRq1IgJEyawfPlyYmNjy/VrMTZS+ODZBszo58eeiATpgCOEqHCyQ19GskMvHnkh\nIdC8OZrx42jUYA+qqnLspWP4ePtQu3Zt9u/ff8/h+QUaOn27h2pVzVn9alsDBS3uoKrg5wfW1nDk\nSEVHc4ewxDA+2/8Zy08vx9zEnPHNxzOlzRRqVq1533Pm5+cTFBTErl272LNnDwcPHizuZ+/p6Ym/\nvz8dOnSgQ4cOeHl5oSjKA38duyMSeG1ZMNbmJvw6siV+NWwfeE4hhCii6w69JPRlJAm9eKQVFECb\nNhAVxV/rP2fYtldYPmA5qQGpjB8/nm3btpXa3Wbd8ctMWRHC/Beb06NhNQMFLko0Zw68/jocPQot\nSv37oEJEJEXw2f7P+OvUXyiKwlC/obzZ9k0auzZ+4Lnz8/MJCQlh37597N+/n/3795OUlARAtWrV\n6N27N88//zydO3fG1NT0vtcJi0vjpd+Ocj07jx+GNKVbA9cHjl0IIUASer2RhF480n74ASZPJmvZ\nb9SP/xBHS0cOjTqEb31fXFxcOHz48D13NfMLNHSbtRcLMxM2v94eI6MH3wEVD+D6daheHYYMgV9/\nreho7ikyNZLvD3/PL8G/kJmXSY+6PXir7Vt08exSLjvpAKqqEhERwb59+9i5cydbtmwhIyMDBwcH\nRo4cyfjx4/H29r6vuePTbjDm96OcuZLGhE51mdLNW7o7CSEemNTQCyHKJiYG3n8fevZkZvVLxKTF\nMLvnbH7/7XciIyP58MMPS02s1h2PJfJaFlO6eUky/zCwtYXhw+Gvv+DatYqO5p5q29Xm+57fEz0l\nms+7fM6Jqyfo9kc3WixswV+n/iK3IPeB11AUhfr16zN27FhWrFhBYmIi69evp2vXrvz444/4+Pjw\n1FNPsXv3bsq62eVa1ZxV49oyqLk7c3dfYNjCI1JXL4QwGNmhLyPZoRePJFWFfv1gxw6ijmzHd0N3\nnvV+ll96/IKXlxc+Pj7s3bv3ngn9jbwCus3ai52lKRtfa19uu6riAZ05o62l//BD+PTTio5GZzfy\nb7D05FK+PfgtEdcicLZ0ZnST0bzS/BXqOdQr9/WuXr3KokWLmDNnDnFxcbRv356PP/6Ybt26lXmu\nv4/H8t66U1QxMWJGPz96NXKT/x+EEPdFSm70RBJ68UhavRoGDkT9+mu6u+3gUMwhzkw4w4KZC/ji\niy8IDAykZcuW95zipz3n+WZrBH++/CRt6zkZKHChkwEDYOdOiIrS7tpXIhpVw/YL25kfNJ+NERsp\nUAvoWKsjA3wH0N+3PzWq1ijX9W7cuMGiRYv48ssvuXz5Mj179uS7776jQYMGZZrnYmIGb6w4wcnL\n1+newJXP+vnhUtW8XGMVQjz6JKHXE0noxSMnMREaNgQPDxb8NIZx/0zgp2d+ortDd/z8/Ojfvz/L\nSrmgKCHtBp2/3UPbek4sHPFwHr58rAUHQ/Pm8Nln2rKqSio2LZZFxxex/MxyQhO1l0k1c2uGv4c/\n7T3a08i1EZ52npga3/8B1yI5OTnMnTuXTz/9lIyMDMaNG8cnn3yCk5Pu36zmF2j49cAlZu04i5mx\nERO71GNU29qYm977lmUhhCgiCb2eSEIvHjlDhsDatZzbu45me4bQqkYrtg/fTo/uPQgMDCQ0NJSa\nNe/dSvD1v46z9XQc26d0xNPJykCBizLp0wf27oVz50CPly4ZSnhSOGvD1rL9wnaOxB7hRv4NAEyM\nTKhrXxc3GzdcrFxwtnTG2dIZR0tHnCydcLJ0wtFC+/PqNtUxNrp3cp2UlMT06dOZN28eVatWZcaM\nGYwbNw4TE90vkrqYmMHnm8PYGZ5ADTsLpj7lTZ8m1TGVQ7NCiFJIQq8nktCLR8qaNfD882TN+Ig2\nTn9zOe0ywWOD2f33bkaPHs3PP//M+PHj7znFjtB4XllyjCndvJnczctAgYsyCw+HRo3gpZdg/vyK\njqZc5eTnEBIfQlhiGOFJ4ZxNPkt8RjyJWYkkZSWRnJ1c4jgzYzO8Hb3xc/Gjg0cH/Gv509C5YYn1\n7mfOnGHy5Mns3LmTxo0b88MPP9CxY8cyxRlwPonPN4cRGpdGDTsLXungyfMt3OWWWSHEXUlCryeS\n0ItHRlISNGiA6l6T0e/7seTUUjYP24yPsQ9NmzalcePG7N27FyOju+8ipmbl0uP7fdhbmrHhtfaY\nmciO40NtyhSYPRuOHYNmzSo6GoPJ1+STkp1CUlZS8Y+EzAQuplwk/Fo4QVeCiE3X3ibraefJ8w2e\nZ1ijYTSp1uSWeVRVZe3atUydOpXo6GiGDBnCzJkzS/0XrJtpNCq7IxL4ec8FjkWlYGFqTK/Gbgxs\nXpMWtR0wlu5QQoibSEKvJ5LQi0dGYanN58vG8UHoHD7u+DHvtX2P9u3bc/bsWU6cOEHt2rXvOlxV\nVV5Zcoy9ZxNZN6Gd3JBZGaSkgK8vuLpCYCBUqVLRET0UVFUlMjWSnZd2sjZsLTsu7iBfk08793a8\n1uo1+vv2x8zYrPj5rKwsvvnmG77++muMjIx4//33mTp1KubmZTv0GhydwqpjMWwMiSMjJx9HKzM6\n13ehm68rbeo4Ymv54GcBhBCVmyT0eiIJvXgkrFgBQ4bw+yf9GaWuZXjj4Szpt4TXX3+duXPnsmbN\nGvr373/PKRbsu8AXW8L5uHcDRrfzNFDg4oFt3Kitp3/vPfj884qO5qGUnJ3MkpAlzD06l/PJ56lh\nU4P3OrzHmKZjqGLy3zdBkZGRTJs2jbVr11KnTh3+97//0bt37zK3qMzKzeffsAR2hsWzOzyBtBv5\nAPi42tCitj0tatvTsLotdZys5LIqIR4zktDriST0otKLjIQmTVjaxYmRTS7RxbMLm4dtZt7ceUye\nPJlp06bx7bff3nOK7WeuMm5pED0bVuOnF5pJj+3K5qWX4Pff4Z9/oHv3io7moaVRNWw9v5Uv9n9B\nQEwANWxq8G77dxnTbAzmJv/txv/7779MmjSJsLAw2rZtywcffEDPnj3v6/+LvAINQVEpHL2UzNGo\nFIKjUsjI0Sb4ZiZGeLta41utKr5uVfGpZoNPNRucrOVfWoR4VElCryeS0ItKLT8fOnbkF4IY2z2X\nzp6d2Th0IxvXbmTo0KH069eP1atX37NuPjg6hRcWHsHb1ZrlY9tgYSYt+CqdjAxo2xYuX9bW09ep\nU9ERPdRUVWXXpV1M3zudA9EHqGFTg/9r93+83OxlLEwtAMjLy+OXX37hq6++Ijo6mmbNmjFx4kQG\nDx6MldX9d34q0KicS0gnLC6NsLii1zSSMv67OdfRygxvV5viBN/b1QZvV2tszKVkR4jKThJ6PZGE\nXlRmBe/+H+8GfcPMdtCjbg/WDl7L+tXrGT58OO3atWPr1q1YWlredXxQVAojFwXiZG3GqvFtcbaR\nncFK68IFaNlS28Jy375HopWlvqmqyu7I3UzfM5390fupZl2Nt9q+xbjm47Ay0ybtubm5LFu2jG++\n+Ybw8HBsbGwYMmQI/fv3p1OnTmWus7+bhPQbnIvPIPxqOmevphMRn87Z+HSycguKn6lhZ1Gc4PtU\ns8bb1Ya6ztbSB1+ISkQSej2RhF5UVsl/LGD0lnFsqA+vtniV2T1nM+eHObz55pt06NCBTZs2YW1t\nfdfxO0Ljmbz8OK5VzfnrldZUs5VbLyu9/fuhRw/w8dHeJOvgUNERVRp7I/cyY98Mdl7aibOlM1Na\nT2FMszG4WGm/MVJVlYMHD7Jw4UJWrVpFVlYWlpaWdO3alTZt2tCyZUuaNWuGQzn+nms0KrGp2UTc\nlOBHXE3nQmIGeQXav+uNjRRqO1pqd/Ndq1LfzQbfalWpaW+BkXTYEeKhIwm9nkhCLyqjHZt+YNSe\nySRYKXzX/VteemIskyZNYvHixfTv358lS5bctSygQKPy857zfLfjLI1r2LJwRAu5wv4ZpRKoAAAT\nBklEQVRRsnUr9O0Ldetqf+7hob+1NBqIjob4eLh+HczNwdZWu/Y9vpl8mB2MOcinez9l24VtmBqZ\n8pzvc7zc9GU61e5UfGPtjRs32LNnD5s2bWL79u2cO3eueLy9vT1169alTp06uLm54ejoeMsPe3t7\n7OzssLOzw9bWtkwXWhXJK9AQmZSpTfKvpmt39ePTiUrOoigFsDIzxruaDfWrVcXXTfvqU80GWwsp\n2xGiIklCryeS0IvKJC49jg9WjmfR5Q34ppqy9JV/uJFqwahRozh//jzvv/8+n3zyyV1r5s8nZPDe\n2lMERibT54nqfD2gsdTMP4r27IF+/cDSElauhPbty2/us2dh1SrYvh2OH4f09JKfq1MHunTR/otB\nz56VLsEPSwxjQdACfg/5nZQbKdib2/OM1zN09exKG/c2eDt6Y6Ro/z9LSUnh2LFjhISEcPHiRS5e\nvMiFCxeIj48n/W6/P4Wsra2LE/x7/ahWrRpubm5Ur14dZ2dnjI3v/P82Kzefs/EZhMelEX5VW58f\nfjWd69l5xc/UsLOgfjUbvFxtqOVoiYeD9oebrbl03BHCACSh1xNJ6EVlkJydzJzAOczc9xU5edm8\nEWbLyAmr+fLX31i2bBkeHh4sWbLkrjddXsvIYc7u8/xxKAoLU2M+6duQ55rWkG42j7LTp7VJ/aVL\n8O672raW9zhPcU9hYbB6tTaRP3VK+16LFtCqFf/f3t0H2VXXdxx/f+/j3rubfcgmJJssD0GRDBYE\ntYjFqVQUEBVaH+MoQdGxYgtWJ9OG4R/7V9V2OtXpTCkjWqGIUtQmg2Ywiq3jGB4sEAWS6EKAJGTz\nsM939z7svffbP85vl7ubZLPBbHbP5vOa+eWc83s499z7u2fv95zzOydcfDGsWhWdmS+Xob8fdu2C\nJ56Ihv0MD0NzM3zgA7B+PVxxBRwlGF2oStUSW36/hU27NvHg7x6kr9gHQEumhXM7zuU1Ha/hrLaz\naG9qpy3bRkumhWQiSdKSJCxBvVqnOFJkdGiUsaExSqMliiNFxkbGolQYozRSolgoUhwpUhgpUBgq\nMDQ0xODgIPV6/YhtSiaTUwL8VatWsXr1arq7u+nu7p6cX7JkCe5O73CJnftH2NE7zM79I+zsHWb3\n4dHJYTsAqYSxorWJZS0ZOluyk9PWpjS5dIJcJklTOkqpowzlcQcnGprkE8uN8zjuUA8xipmRSyfJ\nh/XmM1Fqz2VozaX0t0kWLQX0c0QBvSxU7s72A9u564m7+OZT32RsfIzrd8C633bzwzVv4IEtW0in\n02zYsIGNGzceMV7e3fntviG+8+hL/ODJfVRrddZdehZffNfr9Fi808XICNxyS/RIyzPPhNtvhxtu\nOH5g7w5PPQWbNkWB/DPPRPmXXw4f+hC8//3R+o5nfBx+9Su4997oSsHQEHR3R9uwfj2sXfuHv8dT\nqO51dh3exba929jeu53nB5/nuf7n2Du8l5HKzGfiT5Rh5NN5WryFVm8lV8qRGcuQGE3gw051uEqp\nv0Shv8DQwSGGB4ePWEdra+tkkD89da1aTXLJUobrWfYOFHmxb4ze4RKHCxX6CmX6ChX6RstTgv5T\nJZ00OvIZljZn6GzJ0NmcZUVrlq62HKvam+hqy9HV3sSy5qzuE5DYWRABvZldA3wNSALfcPcvTyu3\nUH4tMAZ8wt2fmKmtmS0FvgecA7wAfNjdB0LZbcCngBpwq7s/FPLfBPwHkAN+DHze3d3MssDdwJuA\nPuAj7v7CTO9JAb0sJOVqmW17t/Gz53/G93d8nx2Hd5AqJXn7402s+tUo/2t5Xhobo62tjZtvvplb\nb72Vrq6uyfZDY+M89kI/jz7fx9YdB3ixb4ymdIL3v7Gbmy5fw2vPiNewBzlJfvEL2LABHn88OpP+\n7ndHZ8rXroX29qjOgQPQ0xPVefjhaGy8WTRcZyKIX7361W9DsQibN8M990Rj+2u16Kk8N9wA73sf\nzPC/GMdBrV5jpDJCoVKgVq9R9zp1r1Pz2uTyxPz0aalaolApHJFGKiMMl4cZLA3SX+xnoDTAQHGA\n/mL/kQcQ48AIMAyJQoKWYgvZsSyJkQS1oRql/hKj/aNMjxFyudyUQL+zs5Pm5maam5vJ5/Nkc3mq\ndahUa1RqdSrjNerujFcqlEolSsUipdJYNC0WKZdKlIpjlEpFyuUi5UqZcrlEpVKOUrlMrV4jkUiQ\nSCSxZBJLJEgkk2RyedJNedJNLSQyLZBqoZ5uZjzdwmgiTz2zhES+lWS+jUSulWw6zYq2EOi3NbGy\nLcfK1iwr25o4o7WJla1NLF+SJa2hRLKAzHtAb2ZJ4HfAu4C9wOPAR9392YY61wK3EAX0bwG+5u5v\nmamtmX0V6Hf3L5vZRqDD3f/OzC4A7gMuBVYBPwVe5+41M3sMuBV4lCig/7q7bzGzzwEXuftnzWwd\n8Bfu/pGZ3pcCejmV3J1itcjB0YPsG97HyyMvs7tvN0+++CTbn9tOz4s9jA+NQz8sO9hEZk+F/YU6\nDmRSKf7sXVdxzXUf4JK3XUmRDIcKFV7qG+W5Q6P0HCywZyC6KS6TSvCWNUt530WruOr1K2jPZ467\nbbLIucMvfwnf+hb86Edw8ODR6y1fHp2Jv+46eM975ubxl729cN99cPfd0ZUAiG6kffvb4aKL4MIL\nowC/qwtyuZP/+otAtV5lsDQ4GeAPlKLp4bHD9BZ6OVA4QO9omBZ6OTB6gOp4FQrA8NSUGk2RHEni\nQ05trEatXIvGz8ySJQ3LGKSBNHjS8ZRDiugUXpJX5lOAEa2/3pBqQCWkckgTy8eQymdIteRI5PNY\nrplaphnLtpBsaiXZ1E4y20Eyt5TO9jM4Y3knq5Z10NnewrK2JXS25mlvztKeS9OeT9OWS9OcTdGU\nTpILKZtK6AqAnHQLIaB/K/Ald786LN8G4O7/0FDn34H/cff7wvIu4Aqis+9HbTtRx933m1lXaH/+\n9PWb2UPAl4jO4v/c3deG/I+G9n85Ucfdt5lZCugFlvsMH8p8BPRPH3yaDT/ZMCXPp/31PNomT6+z\ne/NuBnYNNFY47jqOWX6CbYuV2oztp6wLP/6PQyhP1qskq9VjFc/q9Y54L8d78SPqn8BrTa9nMP2j\ncxw3qIc0+cM1HqZHDpHFgDUYK5rb8LMvYt8broGu80mkjxwqk0klOHdZM689o4W1K5fwx+cs5Q1n\ntuvZ1HJs9Trs2RPd4Do8HH1pV66Mnohz5pnRmflTZedO2Lo1Stu2weHDU8vb2mDJkmiYUC4XpXQ6\n2sbZpMXi6qvhC1941c3rXmegODAZ3PcWeukb66O/2B+lUj8DxQH6in0UygUqlQqVsQrlUplqrYqZ\nkU1lySQzpJNpmrJNNOWaaGluoaWphXw6Tz6VJ5fORfMNKZeampdL50hakprXqNarVOtVavUalVpl\n8srESHmEkcoIg6ODHO47zKFDh+jv62ewf5Dh/mFGB0cpDZcYHxmHUaIxAcWQjvwJObqUQdoglcDS\nifCdARJE84lo2RKGJWyy3IzJ79bkN8yif6Z84171189mXDxq1iL6qs+GYTRnZ/cbd+FnLiTbPvW3\nM2EJfvyxH8/Fph3XbAP6E3/+1eytBvY0LO8lOgt/vDqrj9N2hbvvD/O9wIqGdT1ylHWNh/np+VNe\n392rZjYEdAJTfiHM7DPAZwDOmstHuh3DxJmV6abfBGRH2UMb65TGSlRGp56+MGzGHfuIG41ebV0H\nb8w42stO/4N3jPLJOgbJcSfj1cbcGbZv9oXH/Vs388d29D/WM7xA4zs3hxRG0o1k3UhbgubmJG2k\nafc0nZ6hNZWneUkHzR3L8K5zKJ1/CYXXXkAmn4vOGGVeOWvU0ZxhWUuGZS1Zli/JsqwlS1JnkeRE\nJBJw9tlRmm9r10bplluiA4sDB6Ibevfsgf37o7P5hUI0ZGdsLJqOj0/cdRkdnEzMT0+LydjYH9Q8\nYQk685105jt5Pa8/SRs1/2r1GsPlYYbKQwyVhhgqD3F4+DAvH3qZA4cOcLDvIH39ffQP9FMaLUUH\nKqUKldI45VKFSnmc8XKV8XKVeq2G18HrHiUP09rEPDAxnXYmxqdNT+j7N7tzY7Nqf7owg9L47IZS\nDRWHyDRNvUo98YSqhWwuA/o5F8bBz/lX093vBO6E6Az9XL/edBevvJhHPv3I8Ssez01/+CpERBYM\ns+hKwcqV870lEhPJRJKOXAcduY753hSRk2ouDzn2AY2PNegOebOpM1PbA2GoDWE6MbBzpnV1H2Nd\nk23CkJs2optjRURERERiYS4D+seB88xsjZllgHXA5ml1NgPrLXIZMBSG08zUdjNwY5i/EdjUkL/O\nzLJmtgY4D3gsrG/YzC4LT9VZP63NxLo+CDw80/h5EREREZGFZs6G3IQx6X8NPER0r/o33f0ZM/ts\nKL+D6Ikz1wI9RLeofHKmtmHVXwbuN7NPAS8CHw5tnjGz+4FniW5x+St3r4U2n+OVx1ZuCQngLuAe\nM+sB+okOHEREREREYkP/sdQJ0mMrRURERORUmO1Tbhb+bbsiIiIiInJMCuhFRERERGJMAb2IiIiI\nSIwpoBcRERERiTEF9CIiIiIiMaaAXkREREQkxhTQi4iIiIjEmAJ6EREREZEYU0AvIiIiIhJjCuhF\nRERERGJMAb2IiIiISIwpoBcRERERiTEF9CIiIiIiMaaAXkREREQkxszd53sbYsXMDgEvzvd2nETL\ngMPzvRHyqqjv4kt9F1/qu3hT/8XX6dp3Z7v78uNVUkB/mjOzX7v7m+d7O+TEqe/iS30XX+q7eFP/\nxZf6bmYaciMiIiIiEmMK6EVEREREYkwBvdw53xsgr5r6Lr7Ud/Glvos39V98qe9moDH0IiIiIiIx\npjP0IiIiIiIxpoBeRERERCTGFNAvAmb2j2a208x+Y2Y/NLP2hrLbzKzHzHaZ2dUN+W8ys9+Gsq+b\nmYX8rJl9L+Q/ambnNLS50cx+H9KNDflrQt2e0DZzat756cvMrgl92mNmG+d7e04XZnammf3czJ41\ns2fM7PMhf6mZbQ37xlYz62hoM+f7oMyemSXN7EkzezAsq+9iwMzazeyB8Fu3w8zeqr6LBzP7Qvh7\n+bSZ3WdmTeq7OeDuSjFPwFVAKsx/BfhKmL8A2A5kgTXAc0AylD0GXAYYsAV4d8j/HHBHmF8HfC/M\nLwWeD9OOMN8Ryu4H1oX5O4Cb5/szWcwJSIa+PBfIhD6+YL6363RIQBfwxjC/BPhd2M++CmwM+RtP\n9T6odEJ9+EXgO8CDYVl9F4MEfBv4dJjPAO3qu4WfgNXAbiAXlu8HPqG+O/lJZ+gXAXf/ibtXw+Ij\nQHeYvx74rruX3X030ANcamZdQKu7P+LRt/5u4M8b2nw7zD8AXBmOgq8Gtrp7v7sPAFuBa0LZO0Jd\nQtuJdcncuBTocffn3b0CfJeo32SOuft+d38izI8AO4h+sBr3m8Z9YM73wTl8u4uOmXUD7wG+0ZCt\nvlvgzKwN+FPgLgB3r7j7IOq7uEgBOTNLAXngZdR3J50C+sXnJqIjV4gCjT0NZXtD3uowPz1/Sptw\nkDAEdM6wrk5gsOGAonFdMjeO1RdyCoXLupcAjwIr3H1/KOoFVoT5U7EPyuz9C/C3QL0hT3238K0B\nDgHfCsOlvmFmzajvFjx33wf8E/ASsB8YcvefoL476RTQx4SZ/TSMP5uerm+ocztQBe6dvy0VWfzM\nrAX4PvA37j7cWBbOHul5wAuMmb0XOOju/3esOuq7BSsFvBH4N3e/BBglGqYxSX23MIWx8dcTHZSt\nAprN7OONddR3J4cC+phw93e6+x8dJW0CMLNPAO8FPhZ2DoB9wJkNq+kOeft4ZVhOY/6UNuHyWBvQ\nN8O6+oD2UHf6umRuHKsv5BQwszRRMH+vu/8gZB8Il4QJ04Mh/1TsgzI7lwPXmdkLRMPU3mFm/4n6\nLg72Anvd/dGw/ABRgK++W/jeCex290PuPg78APgT1HcnnQL6RcDMriG6jHydu481FG0G1oU7wNcA\n5wGPhctcw2Z2WRhnth7Y1NBm4k7wDwIPhwOEh4CrzKwjHHFfBTwUyn4e6hLaTqxL5sbjwHkWPV0o\nQ3QT0OZ53qbTQthf7gJ2uPs/NxQ17jeN+8Cc74Nz8kYXIXe/zd273f0con3mYXf/OOq7Bc/de4E9\nZnZ+yLoSeBb1XRy8BFxmZvnwmV9JdO+R+u5km8s7bpVOTSK6aWQP8FRIdzSU3U50l/guwh3hIf/N\nwNOh7F955X8NbgL+K6zzMeDchjY3hfwe4JMN+eeGuj2hbXa+P5PFnoBriZ6w8hxw+3xvz+mSgLcR\nXRr+TcP+di3ReM2fAb8HfgosbWgz5/ug0gn34xW88pQb9V0MEnAx8Ouw7/030VNL1HcxSMDfAzvD\n534P0RNs1HcnOU18GCIiIiIiEkMaciMiIiIiEmMK6EVEREREYkwBvYiIiIhIjCmgFxERERGJMQX0\nIiIiIiIxpoBeRERERCTGFNCLiIiIiMTY/wO1P3anelXJCAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x105e20400>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(12,8))\n",
    "ax = fig.add_subplot(111)\n",
    "temp[temp.FireplaceQu=='Gd']['SalePrice'].plot(kind='kde', ax=ax)\n",
    "temp[temp.FireplaceQu.isnull()]['SalePrice'].plot(kind='kde', ax=ax, color='red')\n",
    "temp[temp.FireplaceQu_frequent=='Gd']['SalePrice'].plot(kind='kde', ax=ax, color='green')\n",
    "temp[temp.FireplaceQu_random=='Gd']['SalePrice'].plot(kind='kde', ax=ax, color='black')\n",
    "lines, labels = ax.get_legend_handles_labels()\n",
    "labels = ['Gd original', 'NA', 'Gd + NA', 'Gd+random']\n",
    "ax.legend(lines, labels, loc='best')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The average House value distribution within the most frequent category of the variable FireplaceQu is affected by both imputation methods. The one that causes the biggest distortion is the frequent label imputation. In both cases, however, the distribution is shifted towards the lower values and the value range reduced (compare red, black and green against blue). \n",
    "\n",
    "Thus, the importance of this particular label for prediction of house price, is masked or changed by the addition of missing values. \n",
    "\n",
    "In cases like this, when the percentage of missing values is so high (~50%) we are better off creating a new category to enclose the observations with NA. I will show this in the next lecture."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**That is all for this demonstration. I hope you enjoyed the notebook, and see you in the next one.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  },
  "toc": {
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": "block",
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
